GNU/Linux >> LINUX-Kenntnisse >  >> Linux

DSH – Führen Sie einen Linux-Befehl auf mehreren Hosts gleichzeitig aus

Vor einiger Zeit haben wir eine Anleitung geschrieben, die beschreibt, wie man einen einzelnen Befehl auf mehreren Remote-Systemen gleichzeitig mit PSSH ausführt in Unix-ähnlichen Systemen. Heute werden wir über ein ähnliches Tool namens DSH sprechen . Es steht für D verteilt sh Elle (oder Tänzermuschel). Mit DSH können wir einen Linux-Befehl auf mehreren Hosts gleichzeitig ausführen. Es ist ein kostenloses und Open-Source-Dienstprogramm, das mit C geschrieben wurde Programmiersprache.

DSH installieren

Unter Arch Linux und Derivaten:

DSH ist in AUR verfügbar , sodass Sie es mithilfe von AUR-Helfern installieren können, zum Beispiel Yay , wie unten gezeigt.

$ yay -S dsh

Auf Debian, Ubuntu:

DSH ist in den offiziellen Repositories von Debian, Ubuntu und anderen DEB-basierten Systemen wie Linux Mint, Elementary OS verfügbar. Um es DSH in einem beliebigen DEB-basierten System zu installieren, führen Sie Folgendes aus:

$ sudo apt-get install dsh

Für andere Linux-Distributionen kann DSH wie unten beschrieben manuell kompiliert und installiert werden.

DSH erfordert libdshconfig um zu arbeiten. Sie können die neueste Version von libdshconfig und dsh von diesem Link herunterladen .

Wechseln Sie nach dem Herunterladen in das Verzeichnis, in das Sie beide Pakete heruntergeladen haben.

Kompilieren und installieren Sie zuerst libdshconfig mit den folgenden Befehlen:

$ tar xfz libdshconfig*.tar.gz
$ cd libdshconfig-*
$ ./configure ; make
$ sudo make install

Kompilieren und installieren Sie dann auch dsh.

$ tar xfz dsh*.tar.gz
$ cd dsh-*
$ ./configure ; make
$ sudo make install

DSH konfigurieren

Wir haben dsh installiert. Lassen Sie uns nun DSH konfigurieren, um Befehle über mehrere Hosts auszuführen. Bearbeiten Sie dazu zunächst die DSH-Konfigurationsdatei und setzen Sie den Remote-Shell-Wert von rsh auf ssh.

Unter Arch Linux und Derivaten ist die Standardkonfigurationsdatei /etc/kgname/dsh.conf .

Bearbeiten Sie diese Datei:

$ sudo vi /etc/kgname/dsh.conf

Ändern Sie die Remote-Shell Wert von rsh zu 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.

Auf DEB-basierten Systemen:

$ sudo vi /etc/dsh/dsh.conf

remoteshell =ssh

Auf RPM-basierten Systemen:

$ sudo vi /usr/local/etc/dsh.conf

remoteshell =ssh

Als nächstes müssen wir die entfernten Hosts hinzufügen, auf denen wir die Befehle ausführen möchten.

Erstellen/bearbeiten Sie dazu die machines.list Datei und fügen Sie die entfernten Hosts hinzu.

Unter Arch Linux und Derivaten:

$ sudo vi /etc/kgname/machines.list

Fügen Sie die IP oder den Hostnamen des Remote-Hosts nacheinander hinzu, wie unten gezeigt.

192.168.43.100 
192.168.43.101

Auf DEB-basierten Systemen:

$ sudo vi /etc/dsh/machines.list
192.168.43.100 
192.168.43.101

Auf RPM-basierten Systemen:

$ sudo vi /usr/local/etc/machines.list
192.168.43.100
192.168.43.101

Sie können der machines.list beliebig viele Remote-Hosts hinzufügen Datei.

Linux-Befehl auf mehreren Hosts gleichzeitig mit DSH ausführen

Sobald Sie alle Remote-Hosts hinzugefügt und einen gemeinsamen Benutzer auf allen Ihren Remote-Systemen erstellt haben, können Sie den Linux-Befehl auf allen Remote-Hosts gleichzeitig ausführen. Nehmen wir zum Beispiel an, der folgende Befehl führt uname -r aus Befehl auf allen Remote-Hosts gleichzeitig ausführen.

$ dsh -a -c uname -r

Sie werden aufgefordert, den Benutzernamen und das Passwort des jeweiligen Remote-Hosts einzugeben. Wenn Sie die Anmeldeinformationen nicht jedes Mal eingeben möchten, wenn Sie diesen Befehl ausführen, konfigurieren Sie einfach die passwortlose SSH-Anmeldung .

Beispielausgabe:

3.10.0-514.16.1.el7.x86_64
4.4.0-34-generic

Wie Sie in der obigen Ausgabe sehen, zeigt das Dienstprogramm dsh die Kernel-Version meiner beiden Remote-Hosts an.

Weitere Einzelheiten finden Sie in der Manpage.

$ man dsh

Empfohlene Lektüre:

  • Befehle auf Remote-Linux-Systemen über SSH ausführen

Linux
  1. Ssh zu mehreren Hosts und einen Befehl ausführen?

  2. Beispiele für Linux-Zeitbefehle

  3. Führen Sie den Befehl auf mehreren Linux-Servern von Windows aus aus

  4. timedatectl-Befehlsbeispiele in Linux

  5. uptime-Befehlsbeispiele in Linux

So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

So führen Sie mehrere Linux-Befehle in einem einzigen Befehl aus

11 Nützliche Beispiele für Linux-Datumsbefehle

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus

Beispiele für Linux-Datumsbefehle

Verstehen des Zeitbefehls in Linux