3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

複数のLinuxサーバに対してコマンドを実行するための方法 PSSH

Last updated at Posted at 2023-02-16

はじめに

本記事は複数のLinuxサーバに対してコマンドを実行するための方法について記載しています。

今の時代はクラウドインフラ上でコンテナを動かしているシステムが多いと思いますが、オンプレミス・クラウドに関わらずサーバにSSH接続して作業するケースはあるのではないでしょうか。

2023年2月7日にOpenSSLに複数の脆弱性が公表されました。
脆弱性対応を行うにあたり、様々な環境のサーバを確認する場合は、複数のサーバでコマンドを実行するなど迅速なオペレーションが求めれます。

以下のようなツールを手段として利用することもできますが、日頃から運用してない場合はキャッチアップ及び準備に時間がかかります。

本記事では簡単なセットアップだけで、複数のLinuxサーバに対してオペレーション可能なpsshについて紹介します。

pssh

psshはparallel ssh programの略称です。

psshは複数のホストでsshを並行して実行するためのプログラムです。
入力をすべてに送信するなどの機能を提供します。

接続するLinux/UNIX/BSDのサーバ側でsshdのプログラムが起動していれば、並列でコマンドが実行できます。

psshのインストール

MacOS/Debian/RHELなど様々なプラットフォームでインストール可能です。

MacOSの場合は、brewからインストールできます。

$ brew install pssh

セットアップ

psshからホスト名を読み取るために、接続するサーバ情報を記載したテキストファイルが必要です。

ファイル名は任意の名前で大丈夫です。
またテキストファイルの中身は[user@]host[:port]の形式で、空白行と「#」で始まるコメント行を含めることができます。

例としてホームディレクトリ配下に、.pssh_hostsを作成します。

$ vi ~/.pssh_hosts

pi@192.168.2.16
kali@192.168.2.17

コマンドの実行

オプションについて-hは必須でhost_fileを指定し、-iは標準出力と標準エラーを表示します。

例えば、OpenSSLのバージョンを確認する場合は以下のようにコマンドを実行します。

$ pssh -i -h ~/.pssh_hosts openssl version

[1] 00:48:08 [SUCCESS] kali@192.168.2.17
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
[2] 00:48:08 [SUCCESS] pi@192.168.2.16
OpenSSL 1.1.0f  25 May 2017

上記の場合は1台、バージョンが3.0.7と出力されています。
CVE-2022-4203、CVE-2023-0216、CVE-2023-0217、CVE-2023-0401に該当するので、バージョンアップしましょう。

数にもよると思いますが、このように複数サーバに対するオペレーションを簡素化することができます。
また複数のホストにファイルをコピーするなどの操作もできます。

おわりに

昔、オンプレミスのシステム構築では、Tera Termのブロードキャスト機能を活用して、複数のターミナルから同時にコマンドを実行していました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?