【ワンライナー・for文・Bash】複数のリモートサーバで同じコマンドを一気に実行させる方法

本日は、ワンライナーで複数のリモートサーバに同じコマンドを実行する方法についての共有です。

ログ調査や値の取得を複数サーバに “SSH接続→コマンド実行→exit” をひたすら入力するのは効率が悪いので、是非参考にしてみてください。

前提条件

複数のリモートサーバに接続する際は、パスワード入力を省略しましょう

・ 操作を行うサーバの公開鍵がリモートサーバの~/.ssh/authorized_keysに登録する
・ 操作を行うサーバ: 192.168.3.100(test.server)
・ リモートサーバ1: 192.168.3.11(remote1.server)
・ リモートサーバ2: 192.168.3.12(remote2.server)

実行方法

実行までは2ステップ

  1. まずは、リモートサーバを記載したファイル(/tmp/server.list)を作成する
    接続先のホスト名またはIPアドレスを改行区切りで記載します。

  1. server.listをfor文で回す+実行コマンド送信
for i in cat /tmp/server.list; do ssh ${i} uname -n; done

すると、以下の様に出力されます

“uname -n” の部分を好きなコマンドに変更していただくことで、いろんなコマンドを実行させることができます。
また、今回は2台のみで実行させましたが、100台とかになってもサーバリストに追記するだけなので超簡単です。

是非、業務や作業の効率化に役立ててください。

では〜〜〜

コメント