by shigemk2

当面は技術的なことしか書かない

複数サーバでコマンドを実行する

sshコマンドとforコマンドの複合技。

forの1行目で実行したいサーバの一覧を列挙しつつ、 ssh server 'commands'でサーバで実行したいコマンドをsshログインせずに実行する。

for server in "shigemk1.net" "shigemk2.net" "shigemk3.net" "shigemk4.net"
do
    echo "${server}..."
    ssh $server 'printf "collection1: "; mongo -u id -p password db --quiet --eval "db.collection1.count()"'
    ssh $server 'printf "collection2: "; mongo -u id -p password db --quiet --eval "db.collection2.count()"'
    ssh $server 'printf "collection3: "; mongo -u id -p password db --quiet --eval "db.collection3.count()"'
done

この例だと、各サーバにあるmongoの各collectionの件数を1つ1つ表示させてる。