同じコマンドを複数のサーバーで実行する方法

こんにちは、さるまりんです。

今回はLinuxの小ネタです。

タイトルにあるように同じコマンドを複数のサーバーで実行したいことがあります。

その方法です。

「コマンドを実行したいサーバーのリスト」に列挙したサーバーに対して「実行したいコマンド」を実行します。

for host in 「コマンドを実行したいサーバーのリスト」; do ssh $host '「実行したいコマンド」'; done

以下が実行例です。
サーバーsalu1salu2上で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);

のようにするのもいいかな。

便利にコマンドを使って快適に安全に作業していきたいです。

読んでくださってありがとうございました。

それではまた!