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