Kod adalah seperti berikut:
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;
WindowsShell kelas awam {
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 block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
/** * 读取分析结果 * * @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; } /** * 写操作 * * @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; } /** * 登录 * * @param user * @param password */ public void login(String user, String password) { // read()Until("login:"); readUntil("login:"); write(user); readUntil("password:"); write(password); readUntil(prompt + ""); } /** * 关闭连接 */ 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);
// 执行的命令 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(); }
}
Ralat berikut dilaporkan selepas dijalankan:
Bagaimana untuk menyelesaikannya?
Oleh kerana sambungan ditolak, bolehkah anda mencuba telnet tempatan terlebih dahulu untuk melihat sama ada anda boleh menyambung?