一部のUbuntu 12.04(Precise Pangolin)サーバーを頻繁に更新する必要があります(ラックスペース)。
私が今やっていることは:
- SCPを使用してサーバーにファイルをコピーする
- SSHを使用してサーバーにログイン
- 浮気停止
- アップロードされたファイルのいくつかのコピーを作成して移動します。
- トムキャットスタート
2番目のサーバー(現在12台のサーバー、増え続ける)で同じファイルを使用して同じプロセスを繰り返します。
サーバーのリストを繰り返しながら、これらすべてを実行するスクリプトを作成することは可能ですか?
どうすればいいですか?好ましくは、このソリューションには何もインストールする必要はありません。会社のほとんどの人はMacBookで作業していますが、Windows仮想マシンもたくさんあります。
理想的には、単に更新するサーバーを追加/削除してサーバーのリストを変更するだけです。しかし、同じ作業を12回実行する時間を節約するソリューションは非常に感謝しています。 :)
答え1
これにはいくつかの解決策があります。手順を手動で制御し、同時に実行しますか?見てコンピュータセキュリティゲートウェイ(Linuxシステムから来る場合)またはスーパーパテ(Windowsシステムから来る場合)すべてを自動化したい場合は確認してください。予想される。
答え2
@デイブ
スクリプトによると、SSH経由で実行できます。
for server in s1 s2 s3; do
ssh $server "command one; command two; ..."
done
または複数の呼び出しに分割します。
for server in s1 s2 s3; do
ssh $server command one
ssh $server command two
...
done
ただ通り過ぎて、答えにこれを追加してみてください。
答え3
自分に好意を与えて確認してください。アンシプール。これがまさにあなたに必要なようです。 SSHを使用して簡単に拡張できるので、必要に応じてリストにサーバーを追加するだけです。シナリオの作成方法を学ぶには午後に時間がかかりますが、今後数え切れないほど多くの時間を節約できます。
答え4
他の人が述べたように、複数のシステムを管理するために設計されたツールがありますが、純粋なbashソリューションの場合はforループを作成し、sshを介していくつかのノードでコマンドを実行できます。
ホスト1とホスト2がこれを実行したいndoのホスト名であるとします。
for node in host1 host2; do
scp /tmp/script.sh user@$node:/tmp/script.sh
if [[ "$?" == "0" ]];then #checks that last command didn't return an error
ssh -oBatchMode=yes user@$node /tmp/script.sh
fi
done
このソリューションを使用する予定の場合は、毎回パスワードを入力する必要がないようにSSHキーを設定することをお勧めします。 BatchModeオプションを使用すると、入力を待つのではなくスクリプトをスキップし、これが望ましいかどうかを判断できます。