Java命令提示符退出

时间:2012-07-04 15:33:07

标签: java

我对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);

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

1 个答案:

答案 0 :(得分:1)

您需要直接使用实际的SSH库而不是putty,如评论中那样,或者捕获exec

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

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