Java menggunakan telnet untuk memanggil arahan cmd jauh
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-14 10:52:56
0
1
984

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?

曾经蜡笔没有小新
曾经蜡笔没有小新

membalas semua (1)
曾经蜡笔没有小新

Oleh kerana sambungan ditolak, bolehkah anda mencuba telnet tempatan terlebih dahulu untuk melihat sama ada anda boleh menyambung?

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!