/** * commons-net-2.0.jar是工程依賴包 */import java.io.InputStream;import java.io.PrintStream;import org.apache.commons.net.telnet.TelnetClient;public class NetTelnet {private TelnetClient telnet = new TelnetClient();private InputStream in;private PrintStream out;private char prompt = '$';// 普通使用者結束public NetTelnet(String ip, int port, String user, String password) {try {telnet.connect(ip, port);in = telnet.getInputStream();out = new PrintStream(telnet.getOutputStream());// 根據root使用者佈建結束符this.prompt = user.equals("root") ? '#' : '$';login(user, password);} catch (Exception e) {e.printStackTrace();}}/** * 登入 * * @param user * @param password */public void login(String user, String password) {readUntil("login:");write(user);readUntil("Password:");write(password);readUntil(prompt + " ");}/** * 讀取分析結果 * * @param pattern * @return */public String readUntil(String pattern) {try {char lastChar = pattern.charAt(pattern.length() - 1);StringBuffer sb = new StringBuffer();char ch = (char) in.read();while (true) {sb.append(ch);if (ch == lastChar) {if (sb.toString().endsWith(pattern)) {return sb.toString();}}ch = (char) in.read();}} catch (Exception e) {e.printStackTrace();}return null;}/** * 寫操作 * * @param value */public void write(String value) {try {out.println(value);out.flush();} catch (Exception e) {e.printStackTrace();}}/** * 向目標發送命令字串 * * @param command * @return */public String sendCommand(String command) {try {write(command);return readUntil(prompt + " ");} catch (Exception e) {e.printStackTrace();}return null;}/** * 關閉串連 */public void disconnect() {try {telnet.disconnect();} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {try {System.out.println("啟動Telnet...");String ip = "192.168.0.11";int port = 23;String user = "user";String password = "111111";NetTelnet telnet = new NetTelnet(ip, port, user, password);telnet.sendCommand("export LANG=en");String r1 = telnet.sendCommand("cd /home/project/");String r2 = telnet.sendCommand("pwd");String r3 = telnet.sendCommand("sh a.sh");System.out.println("顯示結果");System.out.println(r1);System.out.println(r2);System.out.println(r3);telnet.disconnect();} catch (Exception e) {e.printStackTrace();}}}