IT

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

プロフィール画像

まる

5歳の長男と楽しく暮らすシングルファーザーです。 父親目線での育児、家事について発信していきます。ひとり親家庭や父親に寄り添った情報を増やしたい、という思いで活動を始めました。 趣味はスポーツ観戦と晩酌。成長した息子とビール片手にスポーツ観戦することが、小さな夢です。

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

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

  • サーバに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の間で実行したいコマンドを書いておけば良い感じです。

  • この記事を書いた人
プロフィール画像

まる

5歳の長男と楽しく暮らすシングルファーザーです。 父親目線での育児、家事について発信していきます。ひとり親家庭や父親に寄り添った情報を増やしたい、という思いで活動を始めました。 趣味はスポーツ観戦と晩酌。成長した息子とビール片手にスポーツ観戦することが、小さな夢です。

HOT

-IT