【问题标题】:Java Command Prompt ExitJava 命令提示符退出
【发布时间】:2012-07-05 03:07:03
【问题描述】:

我有一个关于 java 中的 Runtime.getRuntime.exec("") 命令的简短问题。

我正在尝试通过 SSH 与网关计算机建立隧道:

String tunnel = "C:\\Program Files\\PuTTY\\putty.exe -ssh -X -P " + localPort + " " + tempUsername + "@" + localIP
                    + " -pw " + tempPassword + " -L " + tunnelPort + ":" + gatewayName + ":"+gatewayPort;

Runtime.getRuntime().exec(tunnel);

除了出现命令提示符这一恼人的事实之外,这段代码可以正常工作。

现在我在执行代码后尝试退出提示:

String tunnel = "C:\\Program Files\\PuTTY\\putty.exe -ssh -X -P " + localPort + " " + tempUsername + "@" + localIP
                    + " -pw " + tempPassword + " -L " + tunnelPort + ":" + gatewayName + ":"+gatewayPort;

String cmdCommands [] = {tunnel, "exit"};

Runtime.getRuntime().exec(cmdCommands);

是否可以像我一样以类似的方式关闭命令提示符,或者有更好的方法吗? (此代码不起作用)

【问题讨论】:

标签: java


【解决方案1】:

您需要像在 cmets 中那样直接使用实际的 SSH 库而不是 putty,或者捕获 exec 的 IO 流

Process p = Runtime.getRuntime().exec(cmdCommands);
InputStream is = p.getInputStream();
OutputStream os = p.getOutputStream();
os.write("exit\n");

出于平台原因,硬编码 \n 通常不是一个好主意,但你明白了。此外,您需要选择正确的 OutputStream。有几个可能有用的子类(缓冲等)。

【讨论】:

  • 我会试试 ssh 库。感谢您的快速答复^^