PSSH - 複数のリモートLinuxシステムでコマンドを実行する
疑いなく、OpenSSHはLinuxで利用可能な最も広く使用されている強力なツールの1つであり、シェルを介してリモートLinuxシステムに安全に接続し、リモートシステムとの間でファイルを安全に転送することを可能にします。
しかし、OpenSSHの最大の欠点は、複数のホストで同じコマンドを一度に実行できず、OpenSSHはそのような作業を行うために開発されていないことです。
ここでParallel SSH(またはPSSH)ツールが役立ちます。これはPythonベースのアプリケーションで、複数のホストで同時にコマンドを並行して実行することができます。
PSSHツールには、OpenSSHおよび以下の関連ツールの並行バージョンが含まれています:
- pssh – は、複数のリモートホスト上でsshを並行して実行するためのプログラムです。
- pscp – は、複数のホストにファイルを並列でコピーするためのプログラムです。
- prsync – は、複数のホストに効率的にファイルを並行してコピーするためのプログラムです。
- pnuke – 複数のリモートホストでプロセスを並行して停止させます。
- pslurp – 複数のリモートホストから中央ホストにファイルを並行してコピーします。
これらのツールは、ネットワーク上の大規模なノードコレクションで作業するシステム管理者にとって便利です。
LinuxにPSSHまたはParallel SSHをインストールする
このガイドでは、RHELベースのディストリビューション(例えばFedora、CentOS Stream、Rocky、AlmaLinux)やDebianベースのディストリビューション(例えばUbuntuやLinux Mint)において、pipコマンドを使用して最新バージョンのPSSH(バージョン2.3.1)プログラムをインストールする手順を見ていきます。
pip コマンドは、Python ソフトウェアパッケージインデックスのインストールと管理のための小さなプログラム(easy_install スクリプトの代替)です。
RHELベースのディストリビューションで
RHEL ディストリビューションでは、まずシステムに pip パッケージ (つまり、python-pip) をインストールする必要があります。その後、yum または dnf を使用して PSSH プログラムをインストールできます。
yum install python-pip
OR
dnf install python-pip
一度pipツールをインストールすれば、以下に示すようにpipコマンドを使用してpsshパッケージをインストールできます。
pip install pssh
Debianベースのディストリビューションで
Debian系のディストリビューションでは、pipコマンドを使用してpsshをインストールするのに1分かかります。
sudo apt install python-pip
sudo pip install pssh
Linuxでpsshをどのように使用しますか?
pssh を使用する際には、リモートシステムに接続するために必要なホストの数と、IPアドレスおよびポート番号を含むホストファイルを作成する必要があります。
ホストファイルの行は以下の形式であり、空白行やコメントも含めることができます。
192.168.0.10:22
192.168.0.11:22
複数のLinuxサーバーで単一のコマンドを実行する
ネットワーク上の異なる複数のLinuxホストで任意のコマンドを実行するには、psshコマンドを実行します。以下に説明するように、psshには多くのオプションがあります:
私たちは、異なるオプションを使ってpsshを用いて複数のホスト上でコマンドを実行するいくつかの方法を見ていきます。
- ホストファイルを読み込むには、
-h host_file-nameまたは--hosts host_file_nameオプションを含めてください。 - 特定のユーザーを定義していないすべてのホストにデフォルトのユーザー名を含めるには、
-lusername または--user usernameオプションを使用します。 - 各ホストが完了する際に標準出力と標準エラーを表示することもできます。
-iまたは--inlineオプションを使用して。 - 指定した秒数後に接続がタイムアウトするように、
-t 秒数オプションを含めることをお勧めします。 - 標準出力を指定したディレクトリに保存するには、
-o /directory/pathオプションを使用できます。 - SSHにパスワードを要求して送信するには、
-Aオプションを使用してください。
いくつかの例とpsshコマンドの使用法を見てみましょう。
複数のLinuxホストでコマンドを実行する
1. 複数のLinuxホストのターミナルでecho “Hello TecMint ”をルートユーザーとして実行し、ルートユーザーのパスワードを促すには、以下のコマンドを実行してください。
重要: すべてのホストがホストファイルに含まれていることを確認してください。
pssh -h pssh-hosts -l root -A echo "Hello TecMint"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 15:54:55 [SUCCESS] 192.168.0.10:22
[2] 15:54:56 [SUCCESS] 192.168.0.11:22
注意: 上のコマンドの「pssh-hosts」は、コマンドを実行したいリモートLinuxサーバーのIPアドレスとSSHポート番号のリストが含まれているファイルです。
複数のLinuxホストのディスク使用量を調べる
2. ネットワーク上の複数のLinuxサーバーのディスクスペース使用量を確認するには、以下の単一のコマンドを実行できます。
pssh -h pssh-hosts -l root -A -i "df -hT"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 16:04:18 [SUCCESS] 192.168.0.10:22
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 38G 4.3G 32G 12% /
tmpfs tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 ext4 190M 25M 156M 14% /boot
[2] 16:04:18 [SUCCESS] 192.168.0.11:22
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 30G 9.8G 20G 34% /
devtmpfs devtmpfs 488M 0 488M 0% /dev
tmpfs tmpfs 497M 148K 497M 1% /dev/shm
tmpfs tmpfs 497M 7.0M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 166M 332M 34% /boot
複数のLinuxホストの稼働時間を調べる
3. 一度に複数のLinuxサーバーの稼働時間を知りたい場合は、次のコマンドを実行することができます。
pssh -h pssh-hosts -l root -A -i "uptime"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 16:09:03 [SUCCESS] 192.168.0.10:22
16:09:01 up 1:00, 2 users, load average: 0.07, 0.02, 0.00
[2] 16:09:03 [SUCCESS] 192.168.0.11:22
06:39:03 up 1:00, 2 users, load average: 0.00, 0.06, 0.09
psshコマンドのマニュアルエントリページを表示すると、psshの使用方法についての他の多くのオプションを確認できます。
pssh --help
要約
Parallel SSHまたはPSSHは、システム管理者がネットワーク上の多くのサーバーと作業する必要がある環境でコマンドを実行するための良いツールです。これにより、ネットワーク上の異なるホストにリモートでコマンドを簡単に実行できます。
このガイドが役に立つことを願っています。psshについての追加情報やインストールや使用中にエラーが発生した場合は、気軽にコメントを投稿してください。
