IT運用・情シス技術ノート

pdshを使って複数のLinuxサーバで同時にコマンドを実行する

pdshを使って複数のLinuxサーバで同時にコマンドを実行する

複数台のサーバを運用していると、個々のサーバにログインしてコマンドを実行するのは結構大変なことです。
台数が増えれば増えるほど、コマンドが多ければ多いほど、必要な労力は増えていきます。
人間は同じことの繰り返しを行うことが苦手らしいので、ストレスも溜まってしまいます。
そこで、複数のサーバ上で同時にコマンドを実行できるpdshを使うと、時間と手間を大幅に省力化できます。

まずはコマンドを実行したいサーバへ、パスワード無しでsshログインできる環境をつくりましょう。
各サーバでログインするアカウントは同じ名前のアカウントにしてください。

○ コマンドを実行するサーバ
1.コマンドを実行するユーザでログインします。
2.以下のコマンドを実行します。
$ ssh-keygen -t rsa
$ cd .ssh
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys


○ コマンドを実行したいサーバ
1.コマンドを実行するユーザでログインします。
2.以下のコマンドを実行します。
$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh
$ vi authorized_keys
$ chmod 600 authorized_keys

※authorized_keysの中身はid_rsa.pubと同じにします

続いて、pdshの実行環境を作ります。
コマンドを実行するサーバと実行したサーバの両方にインストールします。

pdshはEPELリポジトリからパッケージをインストールできます。
もちろんソースからもコンパイルしてインストールもできます。
ソースからインストールする場合はソースを解凍したディレクトリに移動して、
以下のようにコンパイルとインストールを実行します。

$ ./configure --with-ssh --with-dshgroups --prefix=/usr/local/pdsh
$ make
$ sudo make install


コマンドを実行しやすいように、環境変数に以下を設定します。

PATH=$PATH:/usr/local/pdsh/bin
MANPATH=$MANPATH:/opt/local/pdsh/man
PDSH_RCMD_TYPE=ssh

export PATH MANPATH PDSH_RCMD_TYPE


グループファイルを作成することで、特定のサーバ群に対してコマンドを実行できます。

{実行ユーザのホームディレクトリ}/.dsh/group/pdsh_group
※/etc/dsh/group/pdsh_groupでも同じ効果があります。

ファイル内容は、以下のように対象となるサーバのIPアドレスを記述します。
192.168.0.1
192.168.0.2
192.168.0.3


これでpdshコマンドが実行できるようになりました。
以下のようにコマンドを実行してテストしてみます。

$ pdsh -g pdsh_group hostname

グループファイルに記述したサーバから「hostname」コマンドの実行結果が返ってきたら成功です。

クラウドからオンプレミス、パソコンからモバイルまで
長年の経験で培ったノウハウで
御社のITソリューションに「+α」なサービスを
ご提供いたします。

お問い合わせはこちら
お問い合わせは
こちらから