在我的项目下,我有一个 Java 类文件,其中有一个执行以下外部 SFTP 脚本文件的例程:
#!/bin/sh
echo "cd AV/OASIS" >> sftp
echo "put $1 $2" >> sftp
echo "get AV/OASIS/$2 $3$2" >> sftp
echo "bye" >> sftp
/usr/local/bin/sftp -b sftp id@domain
cat /dev/null > sftp
exit 0
执行脚本文件的 Java 代码如下:
String script = "full path of script";
Process p = Runtime.getRuntime().exec(script + " " + param1 + " " + param2 + " " + param3);
但是不知道为什么,class文件生成的日志总是显示错误“主机密钥验证失败。连接关闭。 ”
我在连接到远程机器的脚本中隔离了该行,并在本地机器上运行它(存储此类文件和脚本文件的地方),命令执行成功
我会手动运行 Java 类文件将执行的命令,它也测试正常:
$ script.sh param1 param2 param3
我试图在 Internet 上查找错误消息,显然它似乎与 known_hosts 有关。这可能是原因,还是我还缺少其他东西?
非常感谢!