SONICMOOV Googleページ

pdshを使って複数台のサーバに対して同じコマンドを発行する方法

pdshを使って複数台のサーバに対して同じコマンドを発行する方法

  • このエントリーをはてなブックマークに追加

はじめまして。システムエンジニアのにしだです。 以前はECサイトとかWEBアプリなどを作ってました。SONICMOOVに入社してからはソーシャゲームの開発をしています。 さて、複数台のサーバに対して同じコマンドを発行したい場合って結構あると思うんですが、いちいちログインして一回一回発行するのとかめんどくさいですよね。整合性も悪いし。そこでSSHの並列実行ツールpdshを使ってみました。

続きを読む

対象環境はCentOS6.3

環境はCentOS6.3です。 インストール。以前はRPMを作ってたのですがepelから入るようになってました。

% sudo yum --enablerepo=epel install pdsh

準備

使用したいサーバ全てにSSH公開鍵の設定をしておきます。

主な使い方

下記の3台のサーバがあると仮定します xxx.xxx.xxx.1 xxx.xxx.xxx.2 xxx.xxx.xxx.3 カンマで区切って複数発行します。

% pdsh -w xxx.xxx.xxx.1,xxx.xxx.xxx.2,xxx.xxx.xxx.3 'cat /etc/redhat-release'

正規表現の利用

正規表現も使えます。

% pdsh -w xxx.xxx.xxx.[1-3] 'cat /etc/redhat-release'

グループ指定

下記のようにサーバリストのファイルを作成しておくことでグループ指定することができます。

% cat /etc/dsh/group/app-server
xxx.xxx.xxx.1
xxx.xxx.xxx.2
xxx.xxx.xxx.3
% pdsh -g app-server 'cat /etc/redhat-release'

表示の整形

また、dshbakというコマンドにパイプで渡すと表示の重複などを綺麗に表示してくれます。

% pdsh -g app-server 'cat /etc/redhat-release' | dshbak -c
----------------
xxx.xxx.xxx.[1-3]
----------------
CentOS release 6.3 (Final)

と、超簡単ですがこんな感じで便利に使えます。使用上のポイントとしては必ずワンライナーで書いて対話式のコマンドでは使用しないことです。使用先のサーバにもpdshをインストールしておくとpdcpやrpdcpというコピーコマンドも使用できるようになってますます便利です。

  • このエントリーをはてなブックマークに追加

記事作成者の紹介

にしだ(システムエンジニア)

ECサイトやWEBアプリに加え、ソーシャルアプリの開発もやってます。

関連するSONICMOOVのサービス

システムエンジニア募集中!

×

SNSでも情報配信中!ぜひご登録ください。

×

SNSでも
情報配信中!
SONICMOOV Facebookページ SONICMOOV Twitter SONICMOOV Googleページ
システムエンジニア募集中!

新着の記事

mautic is open source marketing automation