通过java运行时和cygwin发送和接收多个ssh命令

时间:2010-03-17 02:05:24

标签: java ssh runtime cygwin command

嘿我尝试在java中构建程序时遇到了以下问题,该程序在远程linux服务器上执行命令并返回输出以进行处理......

基本上我已经使用SSH客户端安装了Cygwin,并希望执行以下操作:

打开Cygwin,

发送命令“user @ ip”;

返回输出;

发送命令“密码”;

返回输出;

发送多个其他命令,

返回输出;

...等...

到目前为止:

进程proc = Runtime.getRuntime()。exec(“C:/ Power Apps / Cygwin / Cygwin.bat”);

很好地工作,除了我不知道如何尝试下一步。

有任何帮助吗?

3 个答案:

答案 0 :(得分:1)

快捷方式:不要通过cygwin。将您的登录信息和命令作为参数传递给ssh。

更好的方法:安装并使用开源和非常成熟的Sun Grid Engine并使用其DRMAA绑定Java来执行命令。您也可以考虑切换到脚本语言(您的脚本非常类似于脚本)。如果您DRMAA PerlRubyother bindings也有{{3}}。

答案 1 :(得分:1)

你也可以使用Plink: Download here

有一套很好的说明link here

您可以使用如下命令: plink root @ myserver -pw passw /etc/backups/do-backup.sh

答案 2 :(得分:1)

在java中使用ssh实现。几年前我使用过Ganymede,现在可能有更好的选择。 (?)

使用Ganymede,您将获得要读取的输入流和要写入的输出流。

您可以在输入流上创建LineInputReader,并使用它来读取表示远程服务器输出的字符串。然后使用正则表达式模式/匹配器来解析响应。

在输出流上创建PrintWriter,并使用println()发送命令。

它很简单,实际上非常强大(如果你知道正则表达式......它可能需要一些试验和错误才能正确...)