ウェブサイト検索

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オプションを含めてください。
  • 特定のユーザーを定義していないすべてのホストにデフォルトのユーザー名を含めるには、-l username または --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についての追加情報やインストールや使用中にエラーが発生した場合は、気軽にコメントを投稿してください。

関連記事: