Website-Suche

So führen Sie mehrere Befehle auf mehreren Linux-Servern aus


Wenn Sie mehrere Linux-Server verwalten und mehrere Befehle auf allen Linux-Servern ausführen möchten, aber keine Ahnung haben, wie das geht. Kein Grund zur Sorge, in dieser einfachen Anleitung zur Serververwaltung zeigen wir Ihnen, wie Sie mehrere Befehle auf mehreren Linux-Servern gleichzeitig ausführen.

Um dies zu erreichen, können Sie das Programm pssh (Parallel SSH) verwenden, ein Befehlszeilenprogramm zum parallelen Ausführen von SSH auf mehreren Hosts. Damit können Sie von einem Shell-Skript aus Eingaben an alle SSH-Prozesse senden.

Anforderungen

  1. Installieren Sie Pssh, um Befehle auf mehreren Remote-Linux-Servern auszuführen
  2. Sie müssen für alle Remote-Server die passwortlose SSH-Authentifizierung verwenden.

Erstellen Sie ein Shell-Skript

Daher müssen Sie zunächst ein Skript vorbereiten, das die Linux-Befehle enthält, die Sie auf den verschiedenen Servern ausführen möchten. In diesem Beispiel schreiben wir ein Skript, das die folgenden Informationen von mehreren Servern sammelt:

  • Überprüfen Sie die Verfügbarkeit der Server
  • Überprüfen Sie, wer angemeldet ist und was er tut
  • Listen Sie die fünf am häufigsten ausgeführten Prozesse nach Speichernutzung auf.

Erstellen Sie zunächst mit Ihrem bevorzugten Editor ein Skript namens commands.sh.

vi commands.sh

Fügen Sie als Nächstes wie gezeigt die folgenden Befehle zum Skript hinzu.

#!/bin/bash 
###############################################################################
#Script Name    : commands.sh                       
#Description    : execute multiple commands on multiple servers                                                                     
#Author         : Aaron Kili Kisinga       
#Email          : [email  
################################################################################
echo
show system uptime
uptime
echo
show who is logged on and what they are doing
who
echo
show top 5 processe by RAM usage 
ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head -n 6

exit 0

Speichern Sie die Datei und schließen Sie sie. Machen Sie dann das Skript wie gezeigt ausführbar.

chmod +x commands.sh

Erstellen Sie eine PSSH-Hosts-Datei

Fügen Sie als Nächstes die Liste der Server, auf denen Sie die Befehle ausführen möchten, in einer hosts.txt-Datei im Format [user@]host[:port] oder hinzu Geben Sie einfach die IP-Adressen des Servers an.

Wir empfehlen Ihnen jedoch, SSH-Aliase zu verwenden, die in der Datei .ssh/config angegeben werden können, wie in „So konfigurieren Sie benutzerdefinierte SSH-Verbindungen zur Vereinfachung des Fernzugriffs“ erläutert.

Diese Methode ist effizienter und zuverlässiger und ermöglicht Ihnen die Angabe von Konfigurationsoptionen (z. B. Hostname, Identifikationsdatei, Port, Benutzername usw.) für jeden Remote-Server.

Im Folgenden finden Sie unser Beispiel für eine SSH-Host-Aliasedatei, eine benutzerspezifische SSH-Konfigurationsdatei.

vi ~/.ssh/config

Als nächstes erstellen Sie eine hosts.txt-Datei. Hier können Sie einfach die Aliase (Namen, die mit dem Host-Schlüsselwort in der .ssh/config-Datei definiert werden) wie gezeigt angeben.

vi hosts.txt 

Fügen Sie die Server-Aliase hinzu.

server1
server2
server3

Führen Sie Befehle über ein Skript auf mehreren Linux-Servern aus

Führen Sie nun den folgenden pssh-Befehl aus, indem Sie die Datei hosts.txt zusammen mit dem Skript angeben, das mehrere Befehle zur Ausführung auf mehreren Remote-Servern enthält.

pssh -h hosts.txt -P -I<./commands.sh

Bedeutung der im obigen Befehl verwendeten Flags:

  • -h – liest die Hosts-Datei.
  • -P – weist pssh an, die Ausgabe anzuzeigen, sobald sie eintrifft.
  • -I – liest Eingaben und sendet sie an jeden SSH-Prozess.

Das ist es! In diesem Artikel haben wir gezeigt, wie Sie unter Linux mehrere Befehle auf mehreren Servern ausführen. Sie können Ihre Gedanken zu diesem Thema über den Kommentarbereich unten mitteilen.