parallel-ssh - PSSH を使ってみる

pipやgemが利用できずにFablicやcapistranoがインストールできない環境でも利用できる並列ssh/scpコマンドがparallel-ssh
ログイン後にsudoしてコマンドを実行するような複雑な処理はできない(みたい)だけれど初期設定程度なら必要十分な機能があります。

parallel-ssh - PSSH

1.インストール


# tar zxvf pssh-2.3.1.tar.gz
# cd pssh-2.3.1
# python setup.py build
# python setup.py install
インストールされるのは以下のコマンド群。

  • pnuke
  • prsync
  • pscp
  • pslurp
  • pssh
  • pssh-askpass

2.psshを使ってみる

例としてtarget_hostsに書かれたホスト群に対してuptimeコマンドを実行する。



-h でコマンド実行対象のホスト名一覧を指定できる。
--askpass でログインユーザのパスワードをインタラクティブに入力できる。
-o ディレクトリ名 -hで指定したホスト名をファイル名として実行結果が出力される。
-e ディレクトリ名 -hで指定したホスト名をファイル名としてエラーメッセージが出力される。

[書式] pssh <オプション> <実行コマンド>

# cat target_hosts
www00
www01
www02

# pssh -h target_hosts --askpass -o ok/ -e error/ "uname -a"

# ls ok/
www00
www01
www02

ok/に成功時の実行結果がerror/にエラーメッセージが入る。

# cat ok/www00
Linux hsrv576 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
おお、これは便利。

3.pscpを使ってみる

指定したホスト群に一斉にscpが可能。
例としてauthorized_keysをバラまいてみる。
オプション指定はpsshと一緒。

[書式] pscp <オプション> <コピー元(ローカルPATH)> <コピー先(コピー先となるサーバ上のPATH)>

# pscp -h target_hosts --askpass -o ok/ -e error/ /root/.ssh/autorized_keys /root/.ssh/autorized_keys

必要最低限の機能しかありませんが、十分に役立ちます。