TelnetTerminal
package com.network.telnet; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import org.apache.commons.net.telnet.TelnetClient; public class TelnetTerminal extends Thread { public static final int DEFAULT_TELNET_PORT = 23; /** * the TelnetClient of commons-net */ public TelnetClient telnet; /** * the output of remote */ private StringBuffer remoteInfo = new StringBuffer(); private InputStream in; private PrintStream out; /** * use default port * * @param ip */ public TelnetTerminal(String ip) { this(ip, DEFAULT_TELNET_PORT); } /** * create a telnet terminate * * @param ip * @param port */ public TelnetTerminal(String ip, int port) { try { telnet = new TelnetClient(); telnet.connect(ip, port); //to sure the thread must be stop and socket must be close telnet.setSoTimeout(3000); in = telnet.getInputStream(); out = new PrintStream(telnet.getOutputStream()); // open the thread of received start(); } catch (Exception e) { e.printStackTrace(); } } /** * wirte to remote * * @param command */ public void write(String command) { try { // the interval of execute command Thread.sleep(500); // a command end with '\n\r' out.println(command); out.flush(); } catch (Exception e) { e.printStackTrace(); } } /** * close connect */ public void disconnect() { try { telnet.disconnect(); telnet = null; } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { byte[] buff = new byte[1024]; int len = 0; try { while ((len = in.read(buff)) != -1) { String str = new String(buff, 0, len); remoteInfo.append(str); } } catch (IOException e) { } } /** * exceute script * * @param scripts */ public void runCMD(String... scripts) { for (String cmd : scripts) { write(cmd.trim()); } } /** * get output info of the remote, but this method will block 1000ms * * @return */ public String getRemoteInfo() { try { Thread.sleep(1000); return remoteInfo.toString(); } catch (InterruptedException e) { e.printStackTrace(); } return ""; } }