psshと呼ばれるこのツールを使用して、多数のホストに一緒に SSH で接続しています
それを使用する構文は次のとおりです。
pssh [OPTIONS] command [...]
例えば:
pssh -h hosts.txt uptime
ここで、hosts.txt は、すべてのホストの IP アドレスを含むファイルです。上記のコマンドは問題なく動作します。uptime を ls に置き換えても、問題なく動作し、それぞれのマシン上のすべてのファイルの正しい内容が表示されます。
問題は、そのコマンドを echo $PATH に置き換えると、パスが表示されることです
このコマンドを使用する場合:
pssh -h ips.txt which java
次に、すべてのホストについて、次のエラーが表示されます。
which: no java in (/usr/local/bin:/bin:/usr/bin)
通常の ssh コマンド () を使用して手動でホストの 1 つだけに ssh すると、
which コマンドを実行するか、$PATH 変数を確認すると、次のようになります。
-bash-3.2$ echo $PATH
/home/xx/bin64:/home/xx/bin:/usr/kerberos/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin
-bash-3.2$ which java
/home/xx/bin/java
-bash-3.2$
したがって、これは、少なくとも 1 台のマシンに Java がインストールされ、正しいパスが構成されていることを示しています。では、なぜこのコマンドをすべてのホストで機能させることができないのか、誰か教えてもらえますか?