少し前に、 PSSHを使用して複数のリモートシステムで1つのコマンドを一度に実行する方法を説明したガイドを作成しました。 Unixライクなシステムで。今日は、 DSHと呼ばれる同様のツールについて説明します。 。 Dの略です 配布されるsh エル(またはダンサーの殻)。 DSHを使用すると、一度に複数のホストでlinuxコマンドを実行できます。 Cを使用して作成された無料のオープンソースユーティリティです。 プログラミング言語。
DSHのインストール
Arch Linuxおよびその派生物について:
DSHはAURで利用できます 、たとえば YayなどのAURヘルパーを使用してインストールできます 、以下に示すように。
$ yay -S dsh
Debian、Ubuntuの場合:
DSHは、Debian、Ubuntu、およびLinux Mint、ElementaryOSなどの他のDEBベースのシステムの公式リポジトリで利用できます。 DEBベースのシステムにDSHをインストールするには、次のコマンドを実行します。
$ sudo apt-get install dsh
他のLinuxディストリビューションの場合、DSHは、以下に説明するように手動でコンパイルおよびインストールできます。
DSHにはlibdshconfigが必要です 働くために。 libdshconfigとdshの最新バージョンはこのリンクからダウンロードできます。 。
ダウンロードしたら、両方のパッケージをダウンロードしたディレクトリに移動します。
まず、コマンドを使用してlibdshconfigをコンパイルしてインストールします。
$ tar xfz libdshconfig*.tar.gz
$ cd libdshconfig-*
$ ./configure ; make
$ sudo make install
次に、dshもコンパイルしてインストールします。
$ tar xfz dsh*.tar.gz
$ cd dsh-*
$ ./configure ; make
$ sudo make install
DSHの構成
dshをインストールしました。ここで、複数のホスト上でコマンドを実行するようにDSHを構成しましょう。これを行うには、最初にDSH構成ファイルを編集し、リモートシェルの値をrshからsshに設定します。
Arch Linuxおよびその派生物では、デフォルトの構成ファイルは /etc/kgname/dsh.conf です。 。
このファイルを編集します:
$ sudo vi /etc/kgname/dsh.conf
リモートシェルを変更する rshからの値 ssh 。
#default configuration file for dsh. # suppled as part of dancer's shell verbose = 0 remoteshell =ssh showmachinenames = 0 waitshell=1 # whether to wait for execution #remoteshellopt=... # default config file end.
DEBベースのシステムの場合:
$ sudo vi /etc/dsh/dsh.conf remoteshell =ssh
RPMベースのシステムの場合:
$ sudo vi /usr/local/etc/dsh.conf remoteshell =ssh
次に、コマンドを実行するリモートホストを追加する必要があります。
これを行うには、 machines.listを作成/編集します ファイルを作成し、リモートホストを追加します。
Arch Linuxおよびその派生物について:
$ sudo vi /etc/kgname/machines.list
以下に示すように、リモートホストのIPまたはホスト名を1つずつ追加します。
192.168.43.100 192.168.43.101
DEBベースのシステムの場合:
$ sudo vi /etc/dsh/machines.list 192.168.43.100 192.168.43.101
RPMベースのシステムの場合:
$ sudo vi /usr/local/etc/machines.list 192.168.43.100 192.168.43.101
machines.listには任意の数のリモートホストを追加できます ファイル。
DSHを使用して一度に複数のホストでLinuxコマンドを実行する
すべてのリモートホストを追加し、すべてのリモートシステムで共通ユーザーを作成したら、すべてのリモートホストでLinuxコマンドを一度に実行できます。たとえば、次のコマンドは uname -rを実行するとします。 すべてのリモートホストで一度にコマンドを実行します。
$ dsh -a -c uname -r
それぞれのリモートホストのユーザー名とパスワードを入力するように求められます。このコマンドを実行するたびにユーザーの資格情報を入力したくない場合は、パスワードなしのSSHログインを構成するだけです。 。
出力例:
3.10.0-514.16.1.el7.x86_64 4.4.0-34-generic
上記の出力にあるように、dshユーティリティは2つのリモートホストのカーネルバージョンを表示します。
詳細については、manページを参照してください。
$ man dsh
推奨される読み物:
- SSH経由でリモートLinuxシステムでコマンドを実行