Vor einiger Zeit haben wir eine Anleitung zum "Kopieren einer Datei in mehrere Verzeichnisse in der Befehlszeile unter Linux" veröffentlicht . In diesem Artikel haben wir Ihnen verschiedene Methoden beigebracht, um eine einzelne Datei gleichzeitig in mehrere Verzeichnisse zu kopieren. Heute werden wir sehen, wie man einen einzelnen Befehl auf mehreren Remote-Systemen gleichzeitig in Unix-ähnlichen Betriebssystemen ausführt. Wie Sie bereits wissen, können wir über ssh auf das Remote-System zugreifen und mit ihm kommunizieren. openSSH ermöglicht es uns, alle Arten von Verwaltungsaufgaben in einem entfernten System durchzuführen. Eine Einschränkung bei openSSH ist, dass wir den einzelnen Befehl nicht auf mehreren Remote-Systemen gleichzeitig ausführen können. Kein Problem. Hier ist PSSH kommt, um diese Lücke zu füllen.
Herunterladen - Kostenloser Leitfaden:"Der Linux-Kernelmodul-Programmierleitfaden"PSSH , oder P aralel SSH , ist eine Befehlszeilensuite, mit der Sie auf mehreren Hosts parallel per SSH arbeiten können. Die PSSH-Suite besteht aus den folgenden Befehlen:
- pssh - SSH zu mehreren Remote-Systemen parallel,
- pscp - Dateien parallel auf mehrere Hosts kopieren,
- prsync :Dateien parallel auf mehrere Hosts kopieren,
- Pnuke :Prozesse parallel auf mehreren Hosts beenden,
- pslurp :Dateien parallel von mehreren Hosts kopieren.
In diesem Tutorial werden wir sehen, wie man mit PSSH einen einzelnen Befehl auf mehreren Hosts gleichzeitig ausführt.
PSSH installieren
Wir können PSSH ganz einfach mit PIP installieren , ein Python-Paketmanager.
Um PIP auf Arch Linux und seinen Derivaten zu installieren, führen Sie Folgendes aus:
$ sudo pacman -S python-pip
Unter RHEL, Fedora, CentOS:
$ sudo yum install epel-release
$ sudo yum install python-pip
Oder,
$ sudo dnf install epel-release
$ sudo dnf install python-pip
Unter Debian, Ubuntu, Linux Mint:
$ sudo apt-get install python-pip
Weitere Einzelheiten zum Verwalten von Python-Paketen mit PIP finden Sie unter folgendem Link.
- Wie man Python-Pakete mit Pip verwaltet
Führen Sie nach der Installation von PIP den folgenden Befehl aus, um PSSH zu installieren.
$ sudo pip install pssh
PSSH wurde installiert! Lassen Sie uns weitermachen und sehen, wie man es benutzt.
Einen einzelnen Befehl auf mehreren Remote-Systemen gleichzeitig mit PSSH ausführen
Wichtig: Um PSSH zu verwenden (nur für den Zweck dieses Tutorials), müssen alle Ihre Remote-Systeme einen gemeinsamen Benutzernamen mit demselben Passwort haben . Andernfalls hilft diese Methode nicht. Angenommen, ich habe bereits einen Benutzer namens sk erstellt mit Passwort ostechnix auf allen meinen entfernten Hosts. Sie sollten auch auf allen Ihren Remote-Systemen denselben Benutzer mit demselben Passwort haben.
Lassen Sie uns nun sehen, wie Sie einen einzelnen Befehl auf mehreren Remote-Hosts mit PSSH ausführen. Wechseln Sie zu Ihrem lokalen System, auf dem Sie den Befehl ausführen möchten, und erstellen Sie eine Textdatei mit dem Namen remotehosts.txt . Sie können es benennen, wie Sie möchten.
$ vi remotehosts.txt
Fügen Sie die IP-Adressen Ihrer Remote-Hosts mit Portnummern einzeln hinzu, wie unten genau gezeigt.
192.168.1.103:22 192.168.1.104:22
Wo, 192.168.1.103 und 192.168.1.104 sind die IP-Adressen meiner Remote-Systeme. 22 ist die ssh-Portnummer. Sie müssen die richtige Portnummer angeben, wenn Sie sie bereits geändert haben. Stellen Sie außerdem sicher, dass Sie von Ihrem lokalen System über ssh auf alle entfernten Hosts zugreifen können.
Lassen Sie uns nun die Betriebszeit beider Remote-Hosts von unserem lokalen System aus überprüfen. Führen Sie dazu Folgendes aus:
$ pssh -h remotehosts.txt -l sk -A -i "uptime"
Hier,
- remotehosts.txt - Enthält die IP-Adressen beider Remote-Systeme.
- sk - die Benutzernamen beider Remote-Systeme
Geben Sie das Passwort des Benutzers "sk" ein .
Beispielausgabe:
Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 20:51:15 [SUCCESS] 192.168.1.103:22 20:50:50 up 8 min, 1 user, load average: 0.05, 0.11, 0.10 [2] 20:51:15 [SUCCESS] 192.168.1.104:22 20:50:52 up 12 min, 1 user, load average: 0.00, 0.07, 0.12
Wie Sie oben sehen, haben wir den Befehl "uptime" auf zwei Remote-Hosts ausgeführt und das Ergebnis auf einmal erhalten.
Was ist mit der Kernel-Version? Führen Sie Folgendes aus, um die installierte Version beider Remote-Hosts zu überprüfen:
$ pssh -h remotehosts.txt -l sk -A -i "uname -r"
Beispielausgabe:
Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 20:53:09 [SUCCESS] 192.168.1.103:22 3.10.0-327.22.2.el7.x86_64 [2] 20:53:09 [SUCCESS] 192.168.1.104:22 4.4.0-21-generic
Sehr cool, oder? Können wir auf beiden Remote-Hosts gleichzeitig ein Verzeichnis erstellen? Ja, natürlich! Führen Sie dazu den folgenden Befehl aus:
$ pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"
Ebenso können Sie mit PSSH alles tun, was Sie auf mehreren Remote-Hosts von Ihrem lokalen System aus tun möchten.
Wichtig: Bitte seien Sie bei der Verwendung von PSSH sehr vorsichtig. Ein fehlerhafter Befehl wird gleichzeitig auf mehreren Hosts ausgeführt und beschädigt alle Hosts. Seien Sie also sehr vorsichtig, wenn Sie diese Methode in der Produktion anwenden. Ich schlage vor, Sie testen dies in einer virtuellen Maschine. Sobald Sie mit PSSH vertraut sind, können Sie es bei Bedarf in der Produktion verwenden.
Empfohlene Lektüre:
- DSH – Führen Sie einen Linux-Befehl auf mehreren Hosts gleichzeitig aus
- Befehle auf Remote-Linux-Systemen über SSH ausführen
Hoffe das hilft.