コマンドを使用して、マシンのリストでコマンドを並列に実行できます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