複数のリモートLinuxマシンでコマンドまたはスクリプトを実行するには、複数の方法があります。シンプルで簡単な方法の1つは、pssh(並列sshプログラム) を使用することです
。pssh:は、複数のホストでsshを並列実行するためのプログラムです。すべてのプロセスに入力を送信する、sshにパスワードを渡す、出力をファイルに保存する、タイムアウトするなどの機能を提供します。
例と使用法:
host1とhost2に接続し、それぞれから「hello、world」を出力します。
pssh -i -H "host1 host2" echo "hello, world"
複数のサーバーでスクリプトを使用してコマンドを実行します。
pssh -h hosts.txt -P -I<./commands.sh
ホストキーを確認または保存せずに使用法とコマンドを実行する:
pssh -h hostname_ip.txt -x '-q -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey -o PubkeyAuthentication=yes' -i 'uptime; hostname -f'
hosts.txtファイルに100などの多数のエントリがある場合は、並列処理オプションを100に設定して、コマンドが同時に実行されるようにすることもできます。
pssh -i -h hosts.txt -p 100 -t 0 sleep 10000
オプション:
-I:入力を読み取り、各sshプロセスに送信します。
-P:到着時に出力を表示するようpsshに指示します。
-h:ホストのファイルを読み取ります。
-H:単一ホストの場合は[user @] host [:port]。
-i:各ホストの完了時に標準出力と標準エラーを表示します
-x args:追加のSSHコマンドライン引数 を渡します
-oオプション:構成ファイルで使用されている形式でオプションを指定するために使用できます(/ etc / ssh / ssh_config )(〜/ .ssh / config)
-p parallelism:指定された数を同時接続の最大数として使用します
-q Quietモード: ほとんどの警告メッセージと診断メッセージを抑制します。
-t:指定された秒数の後に接続をタイムアウトにします。0は、psshが接続をタイムアウトしないことを意味します
リモートマシンにsshするとき、RSA指紋認証を要求された場合の処理方法。
StrictHostKeyCheckingを無効にして、RSA認証プロンプトを処理します。
-o StrictHostKeyChecking = no
出典:man pssh