パラレルログイン

パッケージ探訪: pssh

2023年4月6日
著者: 竹洞 陽一郎

はじめに

大規模なインフラストラクチャを管理する際には、複数のリモートサーバーに対して同時にコマンドを実行したい場合がよくあります。
通常のSSHクライアントでは、一度に1つのサーバーにしか接続できませんが、pssh (Parallel SSH) を使用することで、この問題を解決できます。

この記事では、psshとは何か、インストール方法、基本的な使い方を紹介します。
これにより、あなたのインフラストラクチャ管理が効率化されることでしょう。

psshとは

psshは、複数のリモートサーバーに対して並列でSSHコマンドを実行するためのツールです。
Pythonで実装されており、pssh、pnuke、prsyncなどのコマンドラインツールが含まれています。
これらのツールを使って、SSHを介してリモートサーバーにコマンドを実行したり、ファイルをコピーしたり、プロセスを終了したりすることができます。

psshの基本的な使い方

psshを使用するには、最初に接続先のリモートサーバー情報を含むファイルを作成します。
例えば、以下のような内容のhosts.txtファイルを作成します。


user@server1.example.com
user@server2.example.com
user@server3.example.com

次に、psshコマンドを実行し、-hオプションで作成したファイルを指定します。
例えば、すべてのリモートサーバーでuname -aコマンドを実行するには、以下のようにします。


pssh -h hosts.txt -l user -A -i "uname -a"

上記のコマンドでは、-lオプションでユーザー名を指定し、-Aオプションでパスワード認証を有効にし、`-i`オプションで各サーバーからの出力をインラインで表示するように設定しています。
このコマンドを実行すると、指定したすべてのリモートサーバーで`uname -a`が実行され、その結果が表示されます。

その他のpsshツール

psshには、他にも便利なツールがいくつか含まれています。
以下に、主要なものをいくつか紹介します。

prsync
複数のリモートサーバーにファイルやディレクトリを同時にコピーするためのツールです。
`rsync`コマンドと同様の構文で使用できます。
pscp
複数のリモートサーバーから、または複数のリモートサーバーへファイルをコピーするためのツールです。
`scp`コマンドと同様の構文で使用できます。
pnuke
複数のリモートサーバーで特定のプロセスを同時に終了するためのツールです。
`kill`コマンドと同様の構文で使用できます。

まとめ

psshは、複数のリモートサーバーを同時に管理するための強力なツールです。
インストール方法や基本的な使い方を理解し、あなたのインフラストラクチャ管理に適用することで、効率的な運用が可能になります。
今回紹介したコマンド以外にも、psshには様々なオプションや機能がありますので、公式サイトや、GitHubリポジトリを参照して、さらに詳しく学んでみてください。