ウェブサイト検索

DSH (ダンサーズ シェル) - 複数の Linux ホストでコマンドを実行


システム管理者は、できれば最小限の物理的移動で、多数のマシンを短時間で監視および管理できることの重要性をよく認識しています。小規模なクラウド環境であっても、大規模なサーバー クラスターであっても、コンピューターを集中管理する機能は不可欠です。

これを部分的に達成するために、 ユーザーが複数のマシン間でコマンドを実行できるようにするDSH (ダンサーのシェル/分散シェル) と呼ばれる気の利いた小さなツールの使用方法を説明します。

DSHとは何ですか?

DSH は「分散シェル」または「ダンサーズ シェル」の略称で、Linux のほとんどの主要なディストリビューションで無料で利用できるツールですが、ディストリビューションのパッケージ リポジトリに含まれていない場合でも、ソースから簡単にビルドできます。

Linux に DSH (分散シェル) をインストールする

このチュートリアルの範囲では、Debian/Ubuntu 環境を想定します。別のディストリビューションを使用している場合は、パッケージ マネージャーの適切なコマンドを置き換えてください。

Debian ベースのディストリビューションでは、ターミナルで次の apt コマンドを使用してDSH をインストールできます。

sudo apt install dsh

RHEL ベースのディストリビューションでは、ソース tar ボールからコンパイルする必要がありますが、その前に必ず「libdshconfig」ライブラリをコンパイルしてインストールしてください。

wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
tar xfz libdshconfig*.tar.gz 
cd libdshconfig-*
./configure ; make
sudo make install

次にdshをコンパイルしてインストールします。

wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar xfz dsh-0.22.0.tar.gz
cd dsh-*
./configure ; make 
sudo make install

Linux で DSH を使用する方法

メイン設定ファイル「/etc/dsh/dsh.conf」 (Debian の場合) および「/usr/local/etc/dsh.conf」 >」(Red Hat の場合)は非常に簡単ですが、rsh は暗号化されていないプロトコルであるため、SSH をリモート シェルとして使用します。

任意のテキスト エディタを使用して、次の行を見つけます。

remoteshell =rsh

それを次のように変更します。

remoteshell =ssh

必要に応じてここに渡すことができる他のオプションがあり、dsh のマニュアル ページにはたくさんのオプションがあります。ここではデフォルトを受け入れ、次のファイル /etc/dsh/machines.list (Debian 用) を見てみましょう。

Red Hat ベースシステムの場合は、「/usr/local/etc/」に「machines.list」というファイルを作成する必要があります。ディレクトリ。

ここでの構文は非常に簡単です。マシンの資格情報 (ホスト名IP アドレス、または FQDN) を 1 行に 1 つずつ入力するだけです。

: 複数のマシンに同時にアクセスする場合は、すべてのマシンにキーベースのパスワードなしの SSH を設定する必要があります。これにより、アクセスが容易になるだけでなく、セキュリティの面でもマシンが強化されます。

私の「/etc/dsh/machines.list」または「/usr/local/etc/machines.list」ファイルには次のように書かれています。

172.16.25.125
172.16.25.126

アクセスしたいマシンの認証情報を入力したら、すべてのマシンに対して uptime などの簡単なコマンドを実行しましょう。

dsh -aM -c uptime

サンプル出力:

172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05
172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05

では、「dsh」コマンドは何をするのでしょうか?

ものすごく単純。まず、dsh を実行し、「-a」オプションをそれに渡します。これは、「uptime」コマンドを「uptime」に送信することを示しています。 「/etc/dsh/machines.list」にリストされているマシンの > すべて」。

次に、「-M」オプションを指定しました。これは、「マシン名」(「/etc/dsh/machines.list< で指定)」を返すように指定しています。”)とuptime コマンドの出力。 (多数のマシンでコマンドを実行するときに並べ替えるのに非常に便利です)。

-c」オプションは「実行するコマンド」、この場合は「稼働時間」を表します。

DSH は、「/etc/dsh/groups/」 ファイル内のマシンのグループで構成することもできます。ここで、 は、次の形式と同じ形式のマシンのリストを含むファイルです。 「/etc/dsh/machines.list」ファイル。グループに対して dsh を実行する場合は、「-g」 オプションの後にグループ名を指定します。

Red Hat ベースシステムの場合は、「/usr/local/etc/」ディレクトリに「groups」というフォルダを作成する必要があります。その「グループ」ディレクトリに「クラスタ」というファイルを作成します。

たとえば、「クラスタ」グループ ファイル「/etc/dsh/groups/cluster」にリストされているすべてのマシンで「w」コマンドを実行します。 」または「/usr/local/etc/groups/cluster」。

dsh -M -g cluster -c w

DSH は柔軟性がはるかに高く、このチュートリアルはほんの表面を紹介するだけです。コマンドの実行以外にも、DSH はファイルの転送、ソフトウェアのインストール、ルートの追加などに使用できます。

大規模なネットワークの責任を負ったシステム管理者にとって、これは非常に貴重です。