java通過telnet執行命令

來源:互聯網
上載者:User

 

/**  * 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();}}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.