我试图在java中执行一个简单的sshpass命令:
String command = "sshpass -p password ssh user@host 'echo test' ";
ProcessBuilder pb = new ProcessBuilder("/bin/sh", "-c", command);
pb.inheritIO();
Process process = pb.start();
process.waitFor();
但执行命令无法在控制台上打印以下错误:
/bin/sh: sshpass: command not found
如果我在Mac OS的终端中执行命令,命令运行完美。 (已经通过brew安装了sshpass)。
如何在java中执行命令?
答案 0 :(得分:1)
感谢@ThorbjørnRavnAndersen,这是正确的命令(适用于Mac):
String command = "/usr/local/bin/sshpass -p password ssh user@host 'echo test' ";
您可以找到执行以下命令的正确路径:
$ which sshpass
答案 1 :(得分:1)
这实际上是Unix的东西,而不是Java。这里有两件事:
sshpass
的绝对路径,则依靠shell在$PATH
/usr/local/bin
添加到$PATH
未放入适当的配置文件中,则不会执行。 shell手册页中提供了完整的详细信息。通过给出绝对路径来绕过查找机制!