java使用telnet調(diào)用遠(yuǎn)程cmd命令
問(wèn)題描述
代碼如下:
import java.io.IOException;import java.io.InputStream;import java.io.PrintStream;import java.io.UnsupportedEncodingException;import java.net.SocketException;
import org.apache.commons.net.telnet.TelnetClient;
public class WindowsShell {
TelnetClient telnet = new TelnetClient('VT220');InputStream in;PrintStream out;String prompt = '>';public WindowsShell(String ip, int port, String user, String password) { try {telnet.connect(ip, port);in = telnet.getInputStream();out = new PrintStream(telnet.getOutputStream());login(user, password); } catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace(); } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace(); }}
/** * 讀取分析結(jié)果 * * @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();
//System.out.print(ch);
} } catch (Exception e) {e.printStackTrace(); } return null;}/** * 寫(xiě)操作 * * @param value */public void write(String value) { try {out.println(value);out.flush(); } catch (Exception e) {e.printStackTrace(); }}/** * 向目標(biāo)發(fā)送命令字符串 * * @param command * @return */public String sendCommand(String command) { try {write(command);return readUntil(prompt + ''); } catch (Exception e) {e.printStackTrace(); } return null;} /** * 登錄 * * @param user * @param password */public void login(String user, String password) { // read()Until('login:'); readUntil('login:'); write(user); readUntil('password:'); write(password); readUntil(prompt + '');}/** * 關(guān)閉連接 */public void disconnect() { try {telnet.disconnect(); } catch (Exception e) {e.printStackTrace(); }}public static void main(String[] args) {WindowsShell ws = new WindowsShell('192.168.100.100', 23, 'Administrator', '123456');
// System.out.println(ws);
// 執(zhí)行的命令String str = ws.sendCommand('ipconfig');try{ str = new String(str.getBytes('ISO-8859-1'),'GBK');}catch(UnsupportedEncodingException e){ e.printStackTrace();
}
System.out.println(str);ws.disconnect();}
}
運(yùn)行后報(bào)錯(cuò)如下:這樣應(yīng)該如何解決呢?
問(wèn)題解答
回答1:因?yàn)檫B接被拒絕了,你先試試本地telnet能不能連上去?
相關(guān)文章:
1. matplotlib - python函數(shù)的問(wèn)題2. javascript - history.replaceState()無(wú)法改變query參數(shù)3. angular.js - angular ng-class里面的引號(hào)問(wèn)題4. java - 是否類(lèi) 類(lèi)型指針、引用作為形參 ,函數(shù)結(jié)束不會(huì)自動(dòng)析構(gòu)類(lèi)?5. docker - 如何修改運(yùn)行中容器的配置6. javascript - 有沒(méi)有什么好的圖片懶加載的插件,需要包含監(jiān)聽(tīng)頁(yè)面滾動(dòng)高度,然后再加載的功能7. javascript - table列過(guò)多,有什么插件可以提供列排序和選擇顯示列的功能8. javascript - vue過(guò)渡效果 css過(guò)渡 類(lèi)名的先后順序9. javascript - es6將類(lèi)數(shù)組轉(zhuǎn)化成數(shù)組的問(wèn)題10. mysql無(wú)法添加外鍵
