今回の記事ではLinuxコマンドのpsshについて紹介します。
psshとは
psshはParallel Secure Shellの略称で複数のホストに対してリモートでコマンドを実行できるコマンドです。
並行してsshコマンドを実行するイメージになります。
複数ホストへ配信した資材を確認したり、複数ホストのログを確認したりするときなどの用途で活用できます。
psshをパスワード認証で使用するには、接続先のsshサーバでsshdが起動しており、sshクライアントの~/.ssh/known_hostsにsshサーバの公開鍵が登録されている必要があります。
psshのインストール
psshコマンドはdnfコマンドでインストールできます。
# dnf -y install pssh
pssh実行
psshコマンドの構文は以下です。
$ pssh [OPTION] [command]
私がよく使うオプションを以下に列挙します。
- -h HOST_FILE, --hosts=HOST_FILE
接続先ホスト一覧を記述したHOST_FILEを指定
HOST_FILEには接続先ホストのログインユーザとホスト名またはIPアドレスを指定 ※ログインユーザの指定 [user@] は省略可能
user@hostname user@xxx.xxx.xxx.xxx
-l USER, --user=USER
sshログインするユーザを指定-A, --askpass
pssh実行時にログインパスワードを尋ねる
※sshログイン時にパスワード認証が必須の場合に指定-i "コマンド"
接続先ホストで引数に指定したコマンドを実行
192.168.10.10~192.168.10.12にhogeユーザでログインしてdfでディスク状況を確認するpssh実行サンプルは以下になります。
サンプルでは192.168.10.11は認証エラーでNG、他ホストは認証成功でdf結果を標準出力しています。
$ cat hostlist.txt hoge@192.168.10.10 hoge@192.168.10.11 hoge@192.168.10.12 $ pssh -h hostlist.txt -A -i "df" Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: #パスワードを入力 [1] 13:34:09 [SUCCESS] hoge@192.168.10.10 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/rhel-root 17141760 1909264 15232496 12% / /dev/nvme0n1p2 983040 307916 675124 32% /boot /dev/nvme0n1p1 613184 7204 605980 2% /boot/efi [2] 13:34:09 [FAILURE] hoge@192.168.10.11 Exited with error code 255 Stderr: Permission denied (publishkey, password [3] 13:34:09 [SUCCESS] hoge@192.168.10.13 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/rhel-root 17141760 5142528 11999232 30% / /dev/nvme0n1p2 983040 307916 675124 32% /boot /dev/nvme0n1p1 613184 9312 605980 3% /boot/efi
まとめ
今回はpsshコマンドを紹介しました。
複数のホストに同じ処理を一括で実行する場合は非常に有用なので、ぜひ覚えて使ってみてください。