こんにちは、さるまりんです。
今回はLinuxの小ネタです。
タイトルにあるように同じコマンドを複数のサーバーで実行したいことがあります。
その方法です。
「コマンドを実行したいサーバーのリスト」に列挙したサーバーに対して「実行したいコマンド」を実行します。
for host in 「コマンドを実行したいサーバーのリスト」; do ssh $host '「実行したいコマンド」'; done
以下が実行例です。
サーバーsalu1
とsalu2
上でdate
コマンドを実行します。
前提として各サーバーにはサーバー名だけで接続できるように.ssh/config
で設定してあります。
$ for host in salu1 salu2; do ssh $host 'date'; done
2022年 8月 7日 日曜日 04:45:08 UTC
2022年 8月 7日 日曜日 13:45:09 JST
実行結果が返却されていますね。タイムゾーンがバラバラでした。
各サーバーに最新のコードを反映するためにデプロイ用のスクリプトdeploy.sh
(中身はgit pull
しているだけです)を実行したくてこの方法でやってみました。
サーバーのリストをテキストファイルに列挙して
for in $host(cat server-list.txt);
のようにするのもいいかな。
便利にコマンドを使って快適に安全に作業していきたいです。
読んでくださってありがとうございました。
それではまた!