●インストール
参考URL:pdshを使って複数台のサーバに対して同じコマンドを発行する方法
参考URL:分散シェルまとめ
複数台のサーバに対して同時にコマンドを発行し一度に作業を行いたい場合があります。便利なツールとして同時にSSH接続するpdshがあります。
使用上のポイントとしては必ずワンライナーで書いて対話式のコマンドでは使用しないことです。使用先のサーバにもpdshをインストールしておくとpdcpやrpdcpというコピーコマンドも使用できるようになってますます便利です。ということらしい。
ただし、前提条件として使用したいサーバ全てにSSH公開鍵の設定をしておく必要があります。
インストールは下記のようにします。
●使用方法
server-a、server-b(もちろんIPアドレスの記載でもOK)に接続するには下記のようにします。
●グルーピング
毎回複数のサーバを指定するのは非常に煩わしいものです。pdsh-mod-dshgroupを合わせてインストールしておくと複数のホストをグループで管理できるようになります。
●pdcp、rpdcp
pdcpはファイルを同時に転送する場合に使用します。使用方法はscpと同じです。ただし、事前に相手先サーバにもpdshをインストールしておく必要があります。
参考URL:pdshを使って複数台のサーバに対して同じコマンドを発行する方法
参考URL:分散シェルまとめ
複数台のサーバに対して同時にコマンドを発行し一度に作業を行いたい場合があります。便利なツールとして同時にSSH接続するpdshがあります。
使用上のポイントとしては必ずワンライナーで書いて対話式のコマンドでは使用しないことです。使用先のサーバにもpdshをインストールしておくとpdcpやrpdcpというコピーコマンドも使用できるようになってますます便利です。ということらしい。
ただし、前提条件として使用したいサーバ全てにSSH公開鍵の設定をしておく必要があります。
インストールは下記のようにします。
# yum --enablerepo=epel -y install pdshpdshを使用するだけならpdshコマンドを実行するサーバにインストールします。
●使用方法
server-a、server-b(もちろんIPアドレスの記載でもOK)に接続するには下記のようにします。
※整形無し % pdsh -w server-a,server-b 'date;hostname;id' または % pdsh -w server-[a,b] 'date;hostname;id' server-a: 2017年 3月 9日 木曜日 13:23:29 JST server-a: server-a.bigbang.mydns.jp server-a: uid=1000(hoge) gid=1000(hoge) groups=1000(hoge) server-b: 2017年 3月 9日 木曜日 13:23:30 JST server-b: server-b.bigbang.mydns.jp server-b: uid=1000(hoge) gid=1000(hoge) groups=1000(hoge) ※整形有り $ pdsh -w server-a,server-b 'date;hostname;id'|dshbak ---------------- server-a ---------------- 2017年 3月 9日 木曜日 14:30:10 JST server-a.bigbang.mydns.jp uid=1000(hoge) gid=1000(hoge) groups=1000(hoge) ---------------- server-b ---------------- 2017年 3月 9日 木曜日 14:30:11 JST server-b.bigbang.mydns.jp uid=1000(hoge) gid=1000(hoge) groups=1000(hoge)目的毎に事前にグループを作成しておくことでグループ指定することが可能です。
●グルーピング
毎回複数のサーバを指定するのは非常に煩わしいものです。pdsh-mod-dshgroupを合わせてインストールしておくと複数のホストをグループで管理できるようになります。
# yum --enablerepo=epel -y install pdsh-mod-dshgroupグルーピングファイルは、$HOME/.dsh/group/に、グループ名(任意)をつけたファイルに複数のサーバを1行1サーバで指定する。
$ cat ~/.dsh/group.txt server-a server-b server-c $ pdsh -g group.txt 'date;hostname;id'
●pdcp、rpdcp
pdcpはファイルを同時に転送する場合に使用します。使用方法はscpと同じです。ただし、事前に相手先サーバにもpdshをインストールしておく必要があります。
$ touch test.txt $ pdcp -w server-a,server-b test.txt ~/これで全サーバにファイルが転送されます。念のため、確認。
$ pdsh -w server-a,server-b 'ls -l ~/test.txt' server-a: -rw-rw-r-- 1 hoge hoge 0 3月 9 14:04 /home/hoge/test.txt server-b: -rw-rw-r-- 1 hoge hoge 0 3月 9 14:04 /home/hoge/test.txt逆に全サーバからファイルを手元にコピーする場合はrpdcpを利用します。rpdcpコマンドを実行すると、suffixにhost名が付与された形で保存されます。
$ rpdcp -w server-a,server-b ~/test.txt ./ $ ls -l test.txt* -rw-rw-r-- 1 hoge hoge 0 3月 9 14:04 test.txt -rw-rw-r-- 1 hoge hoge 0 3月 9 14:14 test.txt.server-a -rw-rw-r-- 1 hoge hoge 0 3月 9 14:14 test.txt.server-b