我对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);
是否可以像我一样关闭命令提示符,或者有更好的方法吗? (此代码不起作用)
答案 0 :(得分:1)
您需要直接使用实际的SSH库而不是putty,如评论中那样,或者捕获exec
Process p = Runtime.getRuntime().exec(cmdCommands);
InputStream is = p.getInputStream();
OutputStream os = p.getOutputStream();
os.write("exit\n");
出于平台原因,硬编码通常是一个坏主意,但你明白了。此外,您需要选择正确的OutputStream。有几个子类(缓冲等)可能很有用。