Java - 打开SSH客户端并发送命令

时间:2017-01-09 07:34:20

标签: java ssh putty

我正在构建一个需要为用户打开新SSH连接的应用程序,然后自动发送命令。 该应用程序需要在Windows上运行,我考虑使用putty到SSH客户端,然后发送命令,但命令不发送到putty。 任何人都知道我该如何实现这个?

这是我的代码:

String command = puttyPath + " -ssh user@localhost"
process =  Runtime.getRuntime().exec(command);
OutputStream out = process.getOutputStream();
Writer writer = new OutputStreamWriter(out);
writer.write(secondCommand);
writer.flush();
process.waitFor(600_000, TimeUnit.SECONDS);

是否有可能只向putty发送一个命令,而putty会知道将它发送到远程服务器?

2 个答案:

答案 0 :(得分:1)

PuTTY是一个GUI应用程序。不要试图自动化它。

请改用Plink。它是PuTTY软件包的控制台应用程序。

它支持输入流,您尝试使用的代码。它还允许支持在命令行上指定命令:

String command = plinkPath + " -ssh user@localhost " + secondCommand;

虽然这不是正确的方法。使用一些本机Java SSH库,如JSch,而不是使用外部应用程序。

请参阅JSch Exec.java example

答案 1 :(得分:0)

您可以尝试为命令添加“-m”和带有secondCommand的文件。 有关enter link description here

的更多信息,请参阅