簡體   English   中英

Java中的sshpass給出錯誤:/ bin / sh:sshpass:找不到命令

[英]sshpass in Java gives error: /bin/sh: sshpass: command not found

我試圖在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中也執行命令?

感謝@ThorbjørnRavn Andersen,這是正確的命令(對於Mac):

String command = "/usr/local/bin/sshpass -p password ssh user@host 'echo test' ";

您可以找到執行以下命令的正確路徑:

$ which sshpass

這實際上是Unix,而不是Java。 這里有兩件事:

  • 通過不提供sshpass的絕對路徑,您可以依靠shell在$PATH找到它
  • 您顯式啟動一個新的 Shell,因為它是非交互式的,所以不會加載您的交互式Shell所做的所有配置文件。 如果未將/usr/local/bin$PATH中,則不會將其添加到適當的配置文件中。 Shell手冊頁中提供了完整的詳細信息。

通過給出絕對路徑,您可以繞過查找機制!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM