java使用telnet调用远程cmd命令
问题描述
代码如下:
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(); }}
/** * 读取分析结果 * * @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();}
}
运行后报错如下:这样应该如何解决呢?
问题解答
回答1:因为连接被拒绝了,你先试试本地telnet能不能连上去?
相关文章:
1. python - Scrapy存在内存泄漏的问题。2. python - 在使用Pycharm时经常看到如下的样式,小括号里红色的部分是什么意思呢?3. javascript - 原生canvas中如何获取到触摸事件的canvas内坐标?4. javascript - 移动端粘贴事件,onpaste事件在app中无效,在app中怎么监测到粘贴事件5. mac连接阿里云docker集群,已经卡了2天了,求问?6. javascript - 关于fullpage.js 自动高度失效的问题7. javascript - Express 和 request 如何代理远程图片?8. javascript - 你们怎样实现前端分页的?9. android - react-native 的headless.js Java API 的代码怎么使用?10. 如何使用git对word文档进行版本控制?
