【发布时间】:2010-10-08 21:35:03
【问题描述】:
场景:我想通过 ssh 从 Java 程序在远程机器上运行命令(我在我的开发机器上使用 OpenSSH)。我还想通过传递密码来建立 ssh 连接,而不是像使用“期望”那样设置密钥。
问题:当尝试执行密码登录等“期望”时,使用 ProcessBuilder 创建的进程似乎看不到密码提示。当运行常规的非 ssh 命令(例如“ls”)时,我可以获得流并与它们进行很好的交互。我将标准错误和标准输出与redirectErrorStream(true); 组合到一个流中,因此我不会在标准错误中错过它...当我使用“-v”选项运行 ssh 时,我看到了流中的所有日志记录,但我看不到提示。这是我第一次尝试将 ProcessBuilder 用于这样的事情。我知道使用 Python、Perl 或良好的期望会更容易,但我的老板想利用我们试图在现有 Java 程序中取回的内容(远程日志文件和运行脚本),所以我有点卡住了。
提前感谢您的帮助!
【问题讨论】: