Linuxバッチリモート実行コマンド管理pssh


psshは,単純な文字インタフェースが複数のサーバに同時に命令を送信して実行するツールである.クラスタの大量サーバに同じ命令を一度に送信するのに適しています(出力を観察します)

使用前提


ホスト接続リモートホストは、sshキーを使用してパスワードなしで接続できます.SSHを参照してください.パスワードキーを使用してログインする必要はありません.

1.ダウンロード


ダウンロードページ:https://code.google.com/archive/p/parallel-ssh/downloads
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/parallel-ssh/pssh-2.3.1.tar.gz
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/parallel-ssh/pssh-2.3.1.tar.gz

2.インストール

tar -zxvf pssh-2.3.1.tar.gz
cd pssh-2.3.1
python setup.py build
python setup.py install

redhat(またはCentOS)ならyumでインストールすることもできます
yum install -y pssh

3.使用


3.1 psshパラメータの紹介


-hコマンドを実行するリモートホストのリストまたは-Huser@ip:portファイル内容フォーマット[user@]host[:port]
-lリモートマシンのユーザー名
-p一度に最大許容接続数
-o出力内容をファイルにリダイレクト
-e実行エラーをファイルにリダイレクト
-tコマンド実行のタイムアウト時間の設定
-パスワードの入力を求めてsshに渡す
-O sshパラメータの詳細設定、ssh_参照configプロファイル
-xは複数のSSHコマンドを渡し、複数のコマンドはスペースで区切られ、引用符で囲まれる
-Xは-xと同じですが、一度に1つのコマンドしか伝えられません.
-i標準出力と標準エラーを表示する各ホストの実行が完了した後
-I各入力コマンドを読み出し、sshプロセスに渡すことで、コマンドスクリプトを標準入力に転送できます.
詳細はコマンド:pssh--help
Usage: pssh [OPTIONS] command [...]Options:  --version             show program's version number and exit  --help                show this help message and exit  -h HOST_FILE, --hosts=HOST_FILE                        hosts file (each line "[user@]host[:port]")  -H HOST_STRING, --host=HOST_STRING                        additional host entries ("[user@]host[:port]")  -l USER, --user=USER  username (OPTIONAL)  -p PAR, --par=PAR     max number of parallel threads (OPTIONAL)  -o OUTDIR, --outdir=OUTDIR                        output directory for stdout files (OPTIONAL)  -e ERRDIR, --errdir=ERRDIR                        output directory for stderr files (OPTIONAL)  -t TIMEOUT, --timeout=TIMEOUT                        timeout (secs) (0 = no timeout) per host (OPTIONAL)  -O OPTION, --option=OPTION                        SSH option (OPTIONAL)  -v, --verbose         turn on warning and diagnostic messages (OPTIONAL)  -A, --askpass         Ask for a password (OPTIONAL)  -x ARGS, --extra-args=ARGS                        Extra command-line arguments, with processing for                        spaces, quotes, and backslashes  -X ARG, --extra-arg=ARG                        Extra command-line argument  -i, --inline          inline aggregated output and error for each server  --inline-stdout       inline standard output for each server  -I, --send-input      read from standard input and send as input to ssh  -P, --print           print output as we get it

3.2パッケージ内のその他のコマンドの説明


psshパッケージには5つのユーティリティがインストールされています.psshは複数のホスト上でコマンドを並列に実行します.pscpはファイルを複数のホストに並列にコピーします.prsyncはrsyncプロトコルによってファイルを効率的に複数のホストに並列にコピーする.pslurpは、複数のリモートホストからセンタホストにファイルを並列にコピーします.pnukeは、複数のリモートホスト上でプロセスを並列に殺します.

4.操作例


4.1サーバIPプロファイルresin.coupons-web.hostsの内容は以下の通りです.
10.10.12.37
10.10.12.38

4.2 psshリモート実行コマンド:whoamiは以下の通り:
[reader@test  hosts]$ pssh -h resin.coupons-web.hosts  -P  'whoami'
10.10.12.37: reader
[1] 16:00:09 [SUCCESS] 10.10.12.37
10.10.12.38: reader
[2] 16:00:09 [SUCCESS] 10.10.12.38

4.2.1リモート実行コマンド:whoamiとリモートログインユーザーrootを指定する:
 pssh -l root -h resin.coupons-web.hosts  -P  'whoami'

4.3 pscpファイルを複数のホストに並列にコピーする
本機をtxtを複数のホストにアップロード/tmp/
[reader@test  hosts]$ pscp -h resin.coupons-web.hosts readme.txt /tmp/
[1] 16:03:20 [SUCCESS] 10.10.12.37
[2] 16:03:20 [SUCCESS] 10.10.12.38

4.4ファイルをリモートホストからローカルにコピーし、pscp方向とは反対:
リモートホストファイル/tmp/readme.txtはローカルホーム~/下ファイルreadmeにコピーする.txt
-Lネイティブディレクトリの指定
実行が完了すると、ファイルはホストディレクトリの下の対応するIPアドレスのディレクトリに格納されます.
~/10.10.12.37/readme.txt
~/10.10.12.38/readme.txt
[reader@test hosts]$ pslurp -h resin.coupons-web.hosts  -L ~/  /tmp/readme.txt  readme.txt 
[1] 16:17:39 [SUCCESS] 10.10.12.37
[2] 16:17:39 [SUCCESS] 10.10.12.38

参考文献:大量のコンピュータを効率的に管理する