Comment exécuter plusieurs commandes sur plusieurs serveurs Linux
- 2769
- 539
- Emilie Colin
Si vous gérez plusieurs serveurs Linux et que vous souhaitez exécuter plusieurs commandes sur tous les serveurs Linux, mais vous n'avez aucune idée de la façon de le faire. Il n'est pas nécessaire de s'inquiéter, dans ce simple guide de gestion des serveurs, nous vous montrerons comment exécuter plusieurs commandes sur plusieurs serveurs Linux simultanément.
Pour réaliser, vous pouvez utiliser le programme PSSH (parallèle SSH), un utilitaire de ligne de commande pour exécuter SSH en parallèle sur un certain nombre d'hôtes. Avec lui, vous pouvez envoyer une entrée à tous les processus SSH, à partir d'un script shell.
Exigences
- Installez PSSH pour exécuter les commandes sur plusieurs serveurs Linux distants
- Vous devez utiliser l'authentification sans mot de passe SSH pour tous les serveurs distants.
Créer un script shell
Par conséquent, vous devez commencer par préparer un script qui contient les commandes Linux que vous souhaitez exécuter sur les différents serveurs. Dans cet exemple, nous rédigerons un script qui collectera les informations suivantes à partir de plusieurs serveurs:
- Vérifiez la disponibilité des serveurs
- Vérifiez qui est connecté et ce qu'ils font
- Répertoriez les 5 meilleurs processus en cours d'exécution en fonction de l'utilisation de la mémoire.
Créez d'abord un script appelé commandes.shot avec votre éditeur préféré.
# commandes VI.shot
Ensuite, ajoutez les commandes suivantes au script comme indiqué.
#!/ bin / bash ############################################### ################################## #Script Nom: Commandes.SH #Description: Exécutez plusieurs commandes sur plusieurs serveurs #Author: Aaron Kili Kisinga #email: [Protégé par e-mail] ########################## #################################################### ### Echo # Show System System Uptime Uptime Echo # show qui est connecté et ce qu'ils font qui fait qui écho # show top 5 Processe by RAM USAGE PS -EO CMD, PID, PPID,% mem,% CPU --sort = - % mem | Tête -N 6 Exit 0
Enregistrez le fichier et fermez-le. Ensuite, rendez le script exécutable comme indiqué.
# commandes chmod + x.shot
Créer un fichier hosts PSSH
Ensuite, ajoutez la liste des serveurs sur lesquels vous souhaitez exécuter les commandes, dans un hôtes.SMS fichier, dans le format [[e-mail protégé]] hôte [: port]
ou donnez simplement les adresses IP du serveur.
Mais nous vous suggérons d'utiliser des alias SSH qui peuvent être spécifiés dans .ssh / config Fichier comme expliqué sur la façon de configurer les connexions SSH personnalisées pour simplifier l'accès à distance.
Cette méthode est plus efficace et fiable, elle vous permet de spécifier des options de configuration (telles que le nom d'hôte, l'identification du fichier, du port, du nom d'utilisateur etc…) pour chaque serveur distant.
Voici notre exemple de fichier d'alias Hosts SSH Fichier.k.un fichier de configuration SSH spécifique à l'utilisateur.
# vi ~ /.ssh / configSSH HOSTS ALIASES Fichier
Ensuite, créez un hôtes.SMS Fichier, ici, vous pouvez simplement spécifier les alias (noms définis à l'aide du mot-clé hôte dans .fichier ssh / config) comme montré.
# VI HOSTS.SMS
Ajouter les alias du serveur.
server1 server2 server3
Exécuter les commandes via un script sur plusieurs serveurs Linux
Maintenant, exécutez ce qui suit psh Commande en spécifiant hôtes.SMS Fichier avec le script qui contient plusieurs commandes à exécuter sur plusieurs serveurs distants.
# hôtes pssh -h.txt -p -i<./commands.sh
Signification des drapeaux utilisés dans la commande ci-dessus:
-H
- lit le fichier hosts.-P
- dit à PSSH d'afficher la sortie à son arrivée.-je
- lit les entrées et envoie à chaque processus SSH.
C'est ça! Dans cet article, nous avons montré comment exécuter plusieurs commandes sur plusieurs serveurs dans Linux. Vous pouvez partager toutes les réflexions relatives à ce sujet via la section des commentaires ci-dessous.
- « Comment trouver une chaîne ou un mot spécifique dans les fichiers et les répertoires
- Créer plusieurs adresses IP à une seule interface réseau »