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