嗨我想用java中的命令提示符重新启动我的adsl调制解调器。但是当想要用户名时cmd会停止,必须输入。什么是问题?
tap_mark label ("com.blabla -v505")
答案 0 :(得分:2)
您可能还需要在每个参数之间留一个空格。键入它的方式是将命令发送到如下所示的提示:
cmd /c start cmd.exe /ctelnet 192.168.1.1 23/cadmin/cadmin/creboot
添加System.out.println(命令);在创建字符串后查看String中的实际内容。
将您的代码编辑为以下内容:
String command = "cmd /c start cmd.exe /c "+tel+" /c "+user+" /c "+pass+" /c "+reboot;
System.out.println(command);
答案 1 :(得分:2)
您需要将用户名和密码以及reboot
命令发送到telnet命令的标准输入(stdin)。为此,请创建一个流程,然后:
// You /probably/ don't need "cmd /c" here ...
Process child = Runtime.getRuntime().exec(tel);
// Write to stdin of child, force flush after each line
// Yes, you need to get an OutputStream here ... it's connected to stdin of the child
PrintWriter out = new PrintWriter(child.getOutputStream(), true);
out.println("admin");
out.println("admin");
out.println("reboot");
请注意,在您发送这些命令以防止子进程阻止时,您可能必须阅读stdout。为此,创建一个后台线程。请参阅此帖子:http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html?page=2