複数の Linux サーバーで複数のコマンドを実行する方法
複数の Linux サーバーを管理していて、すべての Linux サーバーで複数のコマンドを実行したいが、その方法がわかりません。心配する必要はありません。このシンプルなサーバー管理ガイドでは、複数の Linux サーバーで複数のコマンドを同時に実行する方法を説明します。
これを実現するには、複数のホスト上で ssh を並列実行するためのコマンド ライン ユーティリティである pssh (並列 ssh) プログラムを使用します。これを使用すると、シェル スクリプトからすべての ssh プロセスに入力を送信できます。
要件
- Pssh をインストールして複数のリモート Linux サーバーでコマンドを実行する
- すべてのリモート サーバーに対して SSH パスワードなし認証を使用する必要があります。
シェルスクリプトを作成する
したがって、さまざまなサーバーで実行する Linux コマンドを含むスクリプトを準備することから始める必要があります。この例では、複数のサーバーから次の情報を収集するスクリプトを作成します。
- サーバーの稼働時間を確認する
- 誰がログオンしているのか、何をしているのかを確認する
- メモリ使用量に応じて実行中のプロセスの上位 5 つをリストします。
まず、好みのエディタでcommands.shというスクリプトを作成します。
vi commands.sh
次に、示されているように、次のコマンドをスクリプトに追加します。
#!/bin/bash
###############################################################################
#Script Name : commands.sh
#Description : execute multiple commands on multiple servers
#Author : Aaron Kili Kisinga
#Email : [email
################################################################################
echo
show system uptime
uptime
echo
show who is logged on and what they are doing
who
echo
show top 5 processe by RAM usage
ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head -n 6
exit 0
ファイルを保存して閉じます。次に、次のようにスクリプトを実行可能にします。
chmod +x commands.sh
PSSHホストファイルの作成
次に、コマンドを実行するサーバーのリストを hosts.txt ファイルに [user@]host[:port]
の形式で追加します。またはサーバーの IP アドレスを指定するだけです。
ただし、リモート アクセスを簡素化するためにカスタム ssh 接続を構成する方法で説明されているように、.ssh/config ファイルで指定できる ssh エイリアスを使用することをお勧めします。
この方法はより効率的で信頼性が高く、各リモート サーバーの構成オプション (ホスト名、識別ファイル、ポート、ユーザー名など) を指定できます。
以下は、サンプルの ssh ホスト エイリアス ファイル、別名ユーザー固有の ssh 設定ファイルです。
vi ~/.ssh/config
次に、hosts.txt ファイルを作成します。ここでは、次のようにエイリアス (.ssh/config ファイル の Host キーワードを使用して定義された名前) を指定するだけです。
vi hosts.txt
サーバーのエイリアスを追加します。
server1
server2
server3
複数の Linux サーバー上でスクリプトを介してコマンドを実行する
次に、hosts.txt ファイルと、複数のリモート サーバーで実行する複数のコマンドを含むスクリプトを指定して、次の pssh コマンドを実行します。
pssh -h hosts.txt -P -I<./commands.sh
上記のコマンドで使用されるフラグの意味:
-h
– hosts ファイルを読み取ります。-P
– 出力が到着すると表示するように pssh に指示します。-I
– 入力を読み取り、各 ssh プロセスに送信します。
それでおしまい!この記事では、Linux の複数のサーバーで複数のコマンドを実行する方法を説明しました。このトピックに関するご意見は、以下のコメントセクションから共有できます。