Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Parallel SSH (PSSH).

Par Guillaume DI FRANCESCO Publié le 05/01/2017 à 19:16:48 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Le scenario est le suivant. Vous avez une liste de 15 serveurs à administrer et vous devez effectuer une liste de commandes sur tout ces serveurs. Il serait facile de se connecter sur chacun des serveurs, de lancer les différentes commandes et de répéter cette manoeuvre jusqu'à ce que cette tâche d'administration soit terminée.

Cependant, il existe une manière de rendre cette tâche bien plus facile : par l'utilisation du logiciel PSSH (Parallel SSH). En effet, il permet de spécifier une liste de serveurs et d'envoyer une commande Linux d'un seul coup sur tout ces serveurs ; réduisant grandement le temps d'administration.

Pour cet article, considérons plusieurs machines sous Debian 8 :

  • pssh01 représentera le serveur qui enverra une commande sur les autres via PSSH.

  • pssh02 et pssh03 représenteront des serveurs qui vont recevoir une commande quelconque de pssh01.

Installation de PSSH.

Commençons par l'installation et la configuration de PSSH sur notre serveur principal.

  • Mise à jour du serveur.

    [email protected]:~# apt-get update && apt-get upgrade

  • Installation du paquet PSSH ; celle-ci passe par l'installation du paquet python-pip, permettant d'installer des logiciels écrits en Python.

    [email protected]:~# apt-get install python-pip
    [email protected]:~# pip install pssh
    
    ###Répondre oui pour procéder à l'installation. 
    0 mis à jour, 51 nouvellement installés, 0 à enlever et 0 non mis à jour.
    Il est nécessaire de prendre 50,3 Mo dans les archives.
    Après cette opération, 148 Mo d'espace disque supplémentaires seront utilisés.
    Souhaitez-vous continuer ? [O/n] y

  • Création du fichier host. Nous allons créer un fichier dans lequel nous allons renseigner les différents hosts sur lesquels les commandes vont être envoyées.

    ###Création d'un dossier. 
    [email protected]:~# mkdir /etc/ssh/pssh_host
    
    ###Création d'un fichier host. 
    [email protected]:~# nano /etc/ssh/pssh_host/pssh
    
    ###Mettre les adresses IP des serveurs ici.
    192.168.1.56
    192.168.1.59

La configuration de PSSH est maintenant terminée ; il est désormais temps de le tester.

Test d'envoi de commande.

Nous allons vérifier notre installation en envoyant une commande simple à nos deux serveurs de test. Nous allons créer un fichier test.txt dans le dossier /var/tmp et vérifier si il a bien été créé.

Tout d'abord, vérifions que nos hosts répondent bien à notre serveur principal.

[email protected]:~# pssh -h /etc/ssh/pssh_host/pssh -l root -A -i uptime
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 18:57:31 [SUCCESS] 192.168.1.59
 18:57:31 up 4 min,  2 users,  load average: 0,00, 0,01, 0,01
[2] 18:57:36 [SUCCESS] 192.168.1.56
 18:57:35 up 4 min,  2 users,  load average: 0,00, 0,01, 0,01

Les deux hosts répondent "SUCCESS", nous allons créer notre fichier pour être sûr du bon fonctionnement de notre logiciel.

[email protected]:~# pssh -h /etc/ssh/pssh_host/pssh -l root -A -i "echo 'coucou from pssh01' > /var/tmp/test.txt"
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 19:03:21 [SUCCESS] 192.168.1.56
[2] 19:03:21 [SUCCESS] 192.168.1.59

Le fichier a été créé, vérifions qu'il est bien sur nos différents serveurs.

###Sur pssh02
[email protected]:~# cat /var/tmp/test.txt
coucou from pssh01

###Sur pssh03
[email protected]:~# cat /var/tmp/test.txt
coucou from pssh01

Le fichier est bien présent, tout fonctionne correctement.

Pour terminer cet article, notons que plusieurs logiciels similaires sont disponibles sur le site des developpeurs de PSSH.

  • PSCP pour envoyer des fichiers à plusieurs serveurs.

  • PSLURP pour récupérer des fichiers sur d'autres serveurs.

  • PNUKE permet de gérer des processus sur plusieurs serveurs à la fois.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels