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