複数のサーバーでプロセスを実行したいと思います。次のラッパースクリプトを使用しています。スクリプトは一度に1つのサーバーに移動します。複数のサーバーで実行できるように変更したいと思います。それを行う方法はありますか?
#!/bin/bash
for ip in $(<ALL_SERVERS_IP); do
# Tell the remote server to start bash, but since its
# standard input is not a TTY it will start bash in
# noninteractive mode.
ssh -q "$ip" bash <<-'EOF'
printf "%s\n" ================== "$(hostname) ::: Current date : $(date)" \
==================
./remote
EOF
done
答え1
はい。pdsh
複数のリモートホストで同時にコマンドを実行してみてください。ジョブは次のように書くことができます。
pdsh -w ssh:$(echo $(<ALL_SERVERS) | sed -e 's/ /,/g') 'printf "%s\n" ...'
答え2
探しているようですね。GNUパラレル。これはほぼ正確に書かれたものです。あなたの場合は、次のことを行います。
parallel ./remote --sshloginfile ALL_SERVERS_IP
上記は、ALL_SERVERS_IP
1行に1つのIPまたはホスト名を持つテキストファイルであるとします。異なるログインを持つことができる場合は、次のようにリストを作成します。
[email protected]
[email protected]
[email protected]
答え3
私はいくつかのツールを知っていますが、最も簡単なのは構造。一度見てどう思うか教えてください。