本日は、ワンライナーで複数のリモートサーバに同じコマンドを実行する方法についての共有です。
ログ調査や値の取得を複数サーバに “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ステップ
- まずは、リモートサーバを記載したファイル(/tmp/server.list)を作成する
接続先のホスト名またはIPアドレスを改行区切りで記載します。
1 2 3 4 |
vi /tmp/server.list -------------------------- 192.168.3.11 192.168.3.12 |
- server.listをfor文で回す+実行コマンド送信
for i in
cat /tmp/server.list
; do ssh ${i} uname -n; doneすると、以下の様に出力されます
1 2 3 4 |
[root@test 20:56:04 ~]# vi /tmp/server.list [root@test 21:06:20 ~]# for i in `cat /tmp/server.list`; do ssh ${i} "uname -n"; done remote1.server remote2.server |
“uname -n” の部分を好きなコマンドに変更していただくことで、いろんなコマンドを実行させることができます。
また、今回は2台のみで実行させましたが、100台とかになってもサーバリストに追記するだけなので超簡単です。
是非、業務や作業の効率化に役立ててください。
では〜〜〜
コメント