当前位置:贵波网 > 内容 > 正文

java telnet 执行命令

2021-06-24 3

需要个jar包:commons-net-3.3-bin.zip

下载地址:http://commons.apache.org/proper/commons-net/download_net.cgi

你找的代码我修改过了,复制直接使用。linux系统需要先开启telnet服务

//执行的命令
System.out.println(she.sendCommand("ll"));

这个输入linux 命令

import java.io.InputStream;
import java.io.PrintStream;

import org.apache.commons.net.telnet.TelnetClient;

public class Shell {
private TelnetClient telnet = new TelnetClient();

private InputStream in;

private PrintStream out;

private char prompt = $;// 普通用户结束

public Shell(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) {
// read()Until("login:");
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();
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;
}

/**
 * 关闭连接
 */
public void disconnect() {
try {
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
// TelnetClient telnet = new TelnetClient();
try {
Shell she = new Shell("192.168.1.10", 23, "root", "123456");
System.out.println(she);
//执行的命令
System.out.println(she.sendCommand("ll"));
she.disconnect();

} catch (Exception e) {
// TODO: handle exception
}

}
}
  • 很多人安装win7后,无法使用telnet命令了,提示“telnet不是内部或外部命令,也不是可运行的程序”。
    首先你要要确认你的win7版本,如果是家庭版,或高级家庭版,这个命令不能使用,只有win7旗舰版才有telnet命令。
    如果你已经是win7旗舰版,请按照下面的步骤开启telnet命令:
    1、打开控制面板,打开程序和功能;
    2、点击左边的“打开或关闭Windows功能”
    3、找到telnet客户端,勾选,如果你想别人telnet到你的机器,你就需要把telnet服务器端勾选,如果你想两个都要——既想通过本机telnet到别的机器,也想在别的机器上telnet到本机器,那么就勾选两个选项吧。
    4、安装完成后,Telnet服务默认情况下是禁用的。右键我的电脑,点击“管理”,找到“服务”,找到Telnet服务,设置其启动方式为“手动”(更安全,只在需要的时候才启用),或点击“开始”→“运行”,输入servcies.msc打开服务管理器。最后“启动”该服务“确定”退出即可。
    特别说明:部分被优化过的win7旗舰版无法安装telnet服务,或者这个所谓的旗舰版其实只是冒牌的。
    5、如果你在win7上无法成功安装telnet客户端,建议你使用telnet的替代工具,推荐你是用 Xshell ,比telnet更为强大的远程调试工具。
    到此希望你解决了问题。B要开通telnet服务,简单测试,你自己telnet 一下B,开有没有反应就可以了。

    再有,cmd是windows命令,B是windows吗,如果是的话,只能支持很少的命令。用公网ip试试
  • 本周热门
    热门文章
    热门关注