首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的sshpass给出错误: /bin/sh: sshpass: command not found

Java中的sshpass给出错误: /bin/sh: sshpass: command not found
EN

Stack Overflow用户
提问于 2017-09-13 22:13:41
回答 2查看 1.7K关注 0票数 1

我正在尝试在java中执行一个简单的sshpass命令:

代码语言:javascript
复制
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();

但是命令执行失败,在控制台上打印以下错误:

代码语言:javascript
复制
/bin/sh: sshpass: command not found

如果我在我的Mac OS的终端中执行该命令,该命令可以正常运行。(已经通过brew安装了sshpass )。

如何在java中也执行该命令?

EN

回答 2

Stack Overflow用户

发布于 2017-09-13 22:29:05

感谢@Thorbjørn Ravn Andersen,这是正确的命令(适用于Mac):

代码语言:javascript
复制
String command = "/usr/local/bin/sshpass -p password ssh user@host 'echo test' ";

执行以下命令可以找到正确的路径:

代码语言:javascript
复制
$ which sshpass
票数 2
EN

Stack Overflow用户

发布于 2017-09-13 23:21:03

这实际上是Unix的事情,而不是Java。这里有两件事:

通过不给出$PATH

  • You中
  • 的绝对路径,您将依赖于在sshpass中找到它的shell显式地启动一个新的shell,因为它是非交互式的,它不会加载交互式shell所加载的所有配置文件。如果没有将/usr/local/bin添加到$PATH中,则不会执行该操作。有关详细信息,请参阅shell手册页。

通过提供绝对路径,您可以绕过查找机制!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46199865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档