GNU/Linux >> Linux の 問題 >  >> Linux

DSH –一度に複数のホストでLinuxコマンドを実行する

少し前に、 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システムでコマンドを実行

Linux
  1. Linux での uptime コマンドの例

  2. Linux:特定のディレクトリでコマンドを実行する方法

  3. Linux でスーパーユーザーとして cd コマンドを実行する

  1. 複数のホストにSSHで接続し、コマンドを実行しますか?

  2. Linux 時間コマンドの例

  3. Windowsから複数のLinuxサーバーでコマンドを実行する

  1. Linuxで制限時間(タイムアウト)を使用してコマンドを実行する方法

  2. Linuxタイムコマンド

  3. Linux での timedatectl コマンドの例