GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter une commande unique sur plusieurs systèmes distants à la fois

Il y a quelque temps, nous avons publié un guide pour "copier un fichier dans plusieurs répertoires en ligne de commande sous Linux" . Dans cet article, nous vous avons appris différentes méthodes pour copier un seul fichier dans plusieurs répertoires à la fois. Aujourd'hui, nous allons voir comment exécuter une seule commande sur plusieurs systèmes distants à la fois dans des systèmes d'exploitation de type Unix. Comme vous le savez déjà, nous pouvons accéder et communiquer avec le système distant en utilisant ssh. openSSH nous permet d'effectuer toutes sortes de tâches d'administration dans un système distant. Une limitation avec openSSH est que nous ne pouvons pas exécuter la commande unique sur plusieurs systèmes distants à la fois. Aucun problème. C'est ici que PSSH vient combler ce vide.

Télécharger - Guide gratuit :"Le guide de programmation du module du noyau Linux"

PSSH , ou P arallèle SSH , est une suite de ligne de commande qui vous aide à ssh en parallèle sur un certain nombre d'hôtes. La suite PSSH se compose des commandes suivantes :

  • pssh - SSH vers plusieurs systèmes distants en parallèle,
  • pscp - Copier des fichiers en parallèle sur plusieurs hôtes,
  • prsync  : Copier des fichiers en parallèle sur plusieurs hôtes,
  • pnuke  : Tuez les processus en parallèle sur plusieurs hôtes,
  • pslurp  :copiez des fichiers en parallèle à partir de plusieurs hôtes.

Dans ce didacticiel, nous verrons comment exécuter une seule commande sur plusieurs hôtes à la fois à l'aide de PSSH.

Installer PSSH

Nous pouvons facilement installer PSSH en utilisant PIP , un gestionnaire de packages Python.

Pour installer PIP sur Arch Linux et ses dérivés, exécutez :

$ sudo pacman -S python-pip

Sur RHEL, Fedora, CentOS :

$ sudo yum install epel-release
$ sudo yum install python-pip

Ou,

$ sudo dnf install epel-release
$ sudo dnf install python-pip

Sur Debian, Ubuntu, Linux Mint :

$ sudo apt-get install python-pip

Pour plus de détails sur la gestion des packages Python à l'aide de PIP, consultez le lien suivant.

  • Comment gérer les packages Python à l'aide de Pip

Une fois PIP installé, exécutez la commande suivante pour installer PSSH.

$ sudo pip install pssh

PSSH est installé ! Allons-y et voyons comment l'utiliser.

Exécuter une seule commande sur plusieurs systèmes distants à la fois à l'aide de PSSH

Important : Pour utiliser PSSH (uniquement dans le cadre de ce didacticiel), tous vos systèmes distants doivent avoir un nom d'utilisateur commun avec le même mot de passe . Sinon, cette méthode ne servira à rien. Supposons, par exemple, que j'ai déjà créé un utilisateur nommé sk avec le mot de passe ostechnix sur tous mes hôtes distants. Vous devriez également avoir un même utilisateur avec le même mot de passe sur tous vos systèmes distants.

Voyons maintenant comment exécuter une seule commande sur plusieurs hôtes distants à l'aide de PSSH. Accédez à votre système local sur lequel vous souhaitez exécuter la commande et créez un fichier texte appelé remotehosts.txt . Vous pouvez le nommer comme vous le souhaitez.

$ vi remotehosts.txt

Ajoutez les adresses IP de vos hôtes distants avec les numéros de port un par un comme indiqué ci-dessous.

192.168.1.103:22
192.168.1.104:22

Où, 192 168.1.103 et 192.168.1.104 sont les adresses IP de mes systèmes distants. 22 est le numéro de port ssh. Vous devez mentionner le numéro de port correct si vous l'avez déjà modifié. Assurez-vous également que vous pouvez accéder à tous les hôtes distants depuis votre système local via ssh.

Maintenant, vérifions la disponibilité des deux hôtes distants à partir de notre système local. Pour ce faire, exécutez :

$ pssh -h remotehosts.txt -l sk -A -i "uptime"

Ici,

  • remotehosts.txt - Contient les adresses IP des deux systèmes distants.
  • sk - le nom d'utilisateur des deux systèmes distants

Saisissez le mot de passe de l'utilisateur "sk" .

Exemple de résultat :

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

Comme vous le voyez ci-dessus, nous avons exécuté la commande "uptime" sur deux hôtes distants et avons obtenu le résultat en une seule fois.

Qu'en est-il de la version du noyau ? Pour vérifier la version installée des deux hôtes distants, exécutez :

$ pssh -h remotehosts.txt -l sk -A -i "uname -r"

Exemple de résultat :

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

Très cool, n'est-ce pas ? Pouvons-nous créer un répertoire sur les deux hôtes distants à la fois ? Oui bien sûr! Pour ce faire, exécutez la commande suivante :

$ pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"

De même, vous pouvez faire tout ce que vous voulez sur plusieurs hôtes distants à partir de votre système local en utilisant PSSH.

Important : Soyez très prudent lorsque vous utilisez PSSH. Une mauvaise commande s'exécutera simultanément sur plusieurs hôtes et endommagera tous les hôtes. Soyez donc très prudent lorsque vous utilisez cette méthode en production. Je vous suggère de tester cela dans une machine virtuelle. Une fois que vous serez familiarisé avec PSSH, vous pourrez l'utiliser en production si vous le souhaitez.

Suggestion de lecture :

  • DSH – Exécuter une commande Linux sur plusieurs hôtes à la fois
  • Exécuter des commandes sur des systèmes Linux distants via SSH

J'espère que cela vous aidera.


Linux
  1. DSH - Exécutez une commande Linux sur plusieurs hôtes à la fois

  2. Comment exécuter une commande stockée dans une variable ?

  3. Comment exécuter plusieurs commandes d'arrière-plan dans bash sur une seule ligne ?

  4. linux :comment exécuter une commande dans un répertoire donné

  5. Comment puis-je exécuter une commande après le démarrage ?

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment utiliser la commande SFTP pour transférer des fichiers

Comment exécuter la commande Sudo sans mot de passe

Comment exécuter des commandes Linux en arrière-plan

Comment exécuter plusieurs commandes Linux en une seule commande

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux