源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

使用java实现telnet-client工具分享

  • 时间:2022-09-09 08:19 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:使用java实现telnet-client工具分享
telnet-client太费尽了,比ssh-client费尽的多,搞了一天,凑合能用,还得改。 org.apache.commons.net.telnet.TelnetClien --使用了apache的commons-net包,commons-net-3.0.1-bin.zip。
[u]复制代码[/u] 代码如下:
package org.sl.util; import org.apache.commons.net.telnet.TelnetClient; import java.io.*; import java.nio.ByteBuffer; public class TelnetUtil {     String charset = null;     byte[] buff = new byte[2048];     TelnetClient telnetClient = new TelnetClient();     BufferedReader telnetReader = null;     BufferedWriter telnetWirter = null;     InputStream telnetIn = null;     OutputStream telnetOut = null;     public TelnetUtil() {         telnetClient = new TelnetClient();     }     /**      * 连接至服务器      * @param ip      * @param port      * @throws UnsupportedEncodingException      * @throws IOException      */     public void connect(String ip, int port) throws UnsupportedEncodingException,IOException {         telnetClient.connect(ip,port);         setIOStream();     }     /**      * 连接至服务器       * @param ip      * @throws UnsupportedEncodingException      * @throws IOException      */     public void connect(String ip) throws UnsupportedEncodingException,IOException {         telnetClient.connect(ip);         setIOStream();     }     void setIOStream() throws UnsupportedEncodingException {         telnetIn = telnetClient.getInputStream();         telnetOut = telnetClient.getOutputStream();         if(null==charset){             telnetReader = new BufferedReader(new InputStreamReader(telnetIn));             telnetWirter = new BufferedWriter(new OutputStreamWriter(telnetOut));         }else{             telnetReader = new BufferedReader(new InputStreamReader(telnetIn, charset));             telnetWirter = new BufferedWriter(new OutputStreamWriter(telnetOut, charset));         }     }     /**      * 登录      * @param user      * @param passwd      * @return 是否登录成功.      * @throws IOException      */     public boolean login(String user,String passwd) throws IOException {         String read = readString();         for(int i=0; ; i++){             if(-1==read.indexOf("login")){                 read = readString();             }else{                 break;             }         }         writeText(user);         read = readString();         for(int i=0; ; i++){             if(-1==read.indexOf("Password")){                 read = readString();             }else{                 break;             }         }         writeText(passwd);         for(;;){             read = readString();             //System.out.println("last:"+read);             if(-1!=read.indexOf("Last")){                 return true;             }else if(-1!=read.indexOf("incorrect")){                 return false;             }         }     }     /**      * 这是一个测试方法,随便写。      * @throws IOException      */     public void show() throws IOException { //        System.out.println(readString()); //        System.out.println(readString()); //        ByteBuffer tmp = ByteBuffer.allocate(1024); //        byte[] buff = new byte[1024]; //        while(telnetIn.available()>0){ //            int readLen = readBytes(buff,0,1024); //            tmp.put(buff,0,readLen); //        } //        System.out.println(new String(tmp.array()));         System.out.println("1 "+readString());         System.out.println("2 "+readString());         System.out.println("3 "+readString());         writeText("root");         System.out.println("4 " + readString());         writeText("123456");         System.out.println("5 "+readString()); //        System.out.println("6 "+readString()); //        System.out.println("7 "+readString());     }     public int readBytes(byte[] buff, int offset, int len) throws IOException {         return telnetIn.read(buff,offset,len);     }     /**      * 读取字符串<br/>      * 相当于readByte()转为字符串      * @return      * @throws IOException      */     public String readString() throws IOException {         int readLen = readBytes(this.buff, 0, this.buff.length);         if(0<readLen)             return new String(buff,0,readLen).trim();         else             return "";     }     /**      * 读取一行<br/>      * 如果服务器与客户端不是同一种操作系统,可能导致此方法计行失败。      * @return      * @throws IOException      */     public String readLine() throws IOException {         String read = telnetReader.readLine();         return null==read?"":read.trim();     }     public void writeBytes(byte[] buff, int offset, int len) throws IOException {         telnetOut.write(buff,offset,len);     }     /**      * 向服务器写字符串      * @param text      * @throws IOException      */     public void writeText(String text) throws IOException {         telnetWirter.write(text);         telnetWirter.write('\r');         telnetWirter.write('\n');         telnetWirter.flush();     }     /**      * 执行命令,并返回结果<br/>      * 相当于: <br>      * writeText();  <br/>      * return readString();      * @param cmd      * @return      * @throws IOException      */     public String exec(String cmd) throws IOException {         writeText(cmd);         return readString();     }     String login1(String user,String passwd) throws IOException {         String read = null;         readString();         readString();         read = readString();         if(-1!=read.indexOf("login")){             writeText(user);         }         read = readString();         if(-1!=read.indexOf("Password")){             writeText(passwd);         }         read  = readString();         read += readString();         return read; //        StringBuffer sb = new StringBuffer(); //        while(null!= (read = readString())){ //            sb.append(read); //        } // //        return sb.toString();     }     /**      * 关闭      */     public void close(){         try{             writeText("exit");             writeText("exit");             writeText("exit");         }catch(Exception ex){         }         try {             if(null!=telnetIn) telnetIn.close();         } catch (Exception e) {         }         try {             if(null!=telnetOut) telnetOut.close();         } catch (Exception e) {         }         try {             if(null!=telnetClient)telnetClient.disconnect();         } catch (Exception e) {         }     }     /**      * 设置telnet通信时的字符集<br/>      * 注:此字符集与服务器端字符集没有必然关系<br/>      * 此方法需在connect()前调用      * @param charset      */     public void setCharset(String charset ){         this.charset = charset;     }     /**      * 重新设置buff大小,默认为2048字节.      * @param size      */     public void setBufferSize(int size){         this.buff = new byte[size];     } }
测试类
[u]复制代码[/u] 代码如下:
static void t4(){         TelnetUtil tu = new TelnetUtil();         try {             tu.connect("192.168.2.154");             System.out.println(tu.login("root", "123456"));             //tu.show();             //System.out.println(tu.readString());             //System.out.println(tu.exec("pwd"));             System.out.println(tu.exec("echo \"123456789\">1.txt"));             System.out.println(tu.exec("cat 1.txt"));         } catch (IOException e) {             e.printStackTrace();         }         tu.close();     }     static void t1(){         TelnetUtil tu = new TelnetUtil();         try {             tu.connect("192.168.2.154");             System.out.println(tu.login("sl1", "coffee8215"));             //tu.show();             //System.out.println(tu.readString());             System.out.println(tu.exec("pwd"));         } catch (IOException e) {             e.printStackTrace();         }         tu.close();     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部