0

我有一个关于 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);

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

4

1 回答 1

1

您需要直接使用实际的 SSH 库而不是 putty,如注释中所示,或者捕获 IO 流exec

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

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

于 2012-07-04T15:51:52.817 回答