いくつもあるサーバに対して、同じコマンドを実行したいってことが度々あります。
今までは以下のように手作業でやってました。
- サーバに
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 <<EOC
とEOC
の間で実行したいコマンドを書いておけば良い感じです。