複数サーバに対して、同じコマンドを実行するシェルを書いてみた

5月 14, 2021

いくつもあるサーバに対して、同じコマンドを実行したいってことが度々あります。

今までは以下のように手作業でやってました。

  • サーバにsshで接続する
  • コマンドを実行する
  • exitでサーバから抜ける

めんどくさい。。

2, 3台だったらいいけど、10~20台とかになってきたので、流石にシェルを書こうと思いました。

server01 server02 server03に対して、sample.serviceサービスのステータスを確認するシェル

#! /bin/bash

HOSTS="server01 server02 server03"

for i in ${HOSTS}; do
ssh $i <<EOC
systemctl status sample.service
EOC
done

$HOSTSで対象のサーバを半角スペース区切りで設定しておきます。
ssh $i <<EOCEOCの間で実行したいコマンドを書いておけば良い感じです。

ITbash

Posted by まるパパ