Recherche de site Web

Comment exécuter plusieurs commandes sur plusieurs serveurs Linux


Si vous gérez plusieurs serveurs Linux et que vous souhaitez exécuter plusieurs commandes sur tous les serveurs Linux, mais que vous ne savez pas comment procéder. Ne vous inquiétez pas, dans ce simple guide de gestion de serveur, nous allons vous montrer comment exécuter plusieurs commandes sur plusieurs serveurs Linux simultanément.

Pour y parvenir, vous pouvez utiliser le programme pssh (parallel ssh), un utilitaire de ligne de commande permettant d'exécuter ssh en parallèle sur un certain nombre d'hôtes. Avec lui, vous pouvez envoyer des entrées à tous les processus ssh, à partir d'un script shell.

Exigences

  1. Installez Pssh pour exécuter des commandes sur plusieurs serveurs Linux distants
  2. Vous devez utiliser l'authentification sans mot de passe SSH pour tous les serveurs distants.

Créer un script Shell

Vous devez donc commencer par préparer un script contenant les commandes Linux que vous souhaitez exécuter sur les différents serveurs. Dans cet exemple, nous allons écrire un script qui collectera les informations suivantes à partir de plusieurs serveurs :

  • Vérifier la disponibilité des serveurs
  • Vérifiez qui est connecté et ce qu'ils font
  • Répertoriez les 5 principaux processus en cours d'exécution en fonction de l'utilisation de la mémoire.

Créez d'abord un script appelé commands.sh avec votre éditeur préféré.

vi commands.sh

Ensuite, ajoutez les commandes suivantes au script comme indiqué.

#!/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

Enregistrez le fichier et fermez-le. Rendez ensuite le script exécutable comme indiqué.

chmod +x commands.sh

Créer un fichier d'hôtes PSSH

Ajoutez ensuite la liste des serveurs sur lesquels vous souhaitez exécuter les commandes, dans un fichier hosts.txt, au format [user@]host[: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 le fichier .ssh/config comme expliqué dans comment configurer des 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, le port, le nom d'utilisateur etc.) pour chaque serveur distant.

Voici notre exemple de fichier d'alias d'hôtes SSH, également connu sous le nom de fichier de configuration SSH spécifique à l'utilisateur.

vi ~/.ssh/config

Ensuite, créez un fichier hosts.txt, ici vous pouvez simplement spécifier les alias (noms définis à l'aide du mot-clé Host dans le fichier .ssh/config) comme indiqué.

vi hosts.txt 

Ajoutez les alias du serveur.

server1
server2
server3

Exécuter des commandes via un script sur plusieurs serveurs Linux

Exécutez maintenant la commande pssh suivante en spécifiant le fichier hosts.txt ainsi que le script qui contient plusieurs commandes à exécuter sur plusieurs serveurs distants.

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

Signification des drapeaux utilisés dans la commande ci-dessus :

  • -h – lit le fichier hosts.
  • -P – indique à pssh d'afficher la sortie dès qu'elle arrive.
  • -I – lit l'entrée et l'envoie à chaque processus ssh.

C'est ça! Dans cet article, nous avons montré comment exécuter plusieurs commandes sur plusieurs serveurs sous Linux. Vous pouvez partager vos réflexions sur ce sujet via la section commentaires ci-dessous.