bash スクリプトで並列 ssh (pssh) を呼び出す

bash スクリプトで並列 ssh (pssh) を呼び出す

コマンドを使用して、マシンのリストでコマンドを並列に実行できますpssh。たとえば、リストfooされている複数のマシンにフォルダーを作成するには、次のコマンドを実行します。hosts.txt

pssh -h hosts.txt -l MyUserName "mkdir foo"

しかし、コマンドにはさらに多くの引数 (認証に公開キーを使用するなど) が必要なので、bar.sh実行したいコマンドがスクリプトの引数として単純に指定される次の bash スクリプトを作成しようとしました。

#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"

しかし、実行するとbar.sh mkdir fooターミナルがフリーズしてしまい、Ctrl+C を使用しても終了できません。

何か案は?

答え1

についてはあまり詳しくありませんpssh。GNU Parallel を使用した場合も同じエラーが発生しますか?

#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"

ユーザー名をhosts.txtに入力します:

myuser@host1
myuser@host2

答え2

-i (各サーバーのインライン集約出力とエラー) を使用する必要があります。以下は機能します。

pssh -h pssh.txt -l root -i uptime

関連情報