当前位置:  开发笔记 > 编程语言 > 正文

使用Java在ssh上运行命令

如何解决《使用Java在ssh上运行命令》经验,为你挑选了3个好方法。

Scenerio:我想通过ssh从Java程序在远程机器上运行命令(我在开发机器上使用OpenSSH).我还希望通过传递密码而不是像'expect'那样设置密钥来建立ssh连接.所以我没有错过标准错误...当我使用'-v'选项运行ssh时,我看到流中的所有日志记录但我没有看到提示.这是我第一次尝试使用ProcessBuilder这样的东西.我知道使用Python,Perl或者好的OL会更容易,但是我的老板想在现有的Java程序中利用我们想要的东西(远程日志文件和运行脚本),所以我有点卡住了.
问题:当尝试执行'expect'之类的密码登录时,使用ProcessBuilder创建的Process似乎看不到密码提示.当运行常规的非ssh命令(例如'ls')时,我可以获得流并与它们进行交互.我将标准错误和标准输出结合到一个流中redirectErrorStream(true);

在此先感谢您的帮助!



1> Jason Cohen..:

提示可能仅在ssh连接到TTY时显示,而不是Java的情况.

可能有一种方法可以在ssh应用程序的命令行中提供密码.这将是通过提示的方法.

或者,考虑从本机Java代码直接连接到主机服务器,而不是运行外部应用程序.有一百万个图书馆可以做到这一点.


+2代替,-1代表不首先(称之为"交替".净仍然是+1 :)

2> Douglas Leed..:

为什么不使用Java ssh库,而不是使用外部ssh程序:

三铅

JTA

我找到了两个谷歌 - 这将避免openssh将努力工作以防止在stdin上输入密码的问题 - 它将直接打开终端.期望必须非常努力地模拟tty才能工作.



3> shikhar..:

插件:看到此使用通过ssh执行一个命令的例子sshj

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有