Pssh - Executeu ordres en diversos servidors Linux remots mitjançant un únic terminal


Sens dubte, OpenSSH és una de les eines més utilitzades i potents disponibles per a Linux, que us permet connectar-vos de manera segura a sistemes Linux remots mitjançant un shell i us permet transferir fitxers de manera segura a i des de sistemes remots.

Però el major desavantatge d'OpenSSH és que no podeu executar la mateixa ordre en diversos hosts d'una vegada i OpenSSH no està desenvolupat per realitzar aquestes tasques. Aquí és on l'eina Parallel SSH o PSSH és útil, és una aplicació basada en Python, que us permet executar ordres en diversos hosts en paral·lel al mateix temps.

No us perdeu: executeu ordres en diversos servidors Linux mitjançant l'eina DSH

L'eina PSSH inclou versions paral·leles d'OpenSSH i eines relacionades com ara:

  1. pssh: és un programa per executar ssh en paral·lel en diversos hosts remots.
  2. pscp: és un programa per copiar fitxers en paral·lel a diversos amfitrions.
    1. Pscp: copia/transfereix fitxers dos o més servidors Linux remots

    Aquestes eines són bones per als administradors del sistema que es troben treballant amb grans col·leccions de nodes en una xarxa.

    Instal·leu PSSH o Parallel SSH a Linux

    En aquesta guia, veurem els passos per instal·lar la darrera versió del programa PSSH (és a dir, la versió 2.3.1) a distribucions basades en Fedora com CentOS/RedHat i derivats de Debian com Ubuntu/Mint mitjançant l'ordre pip.

    L'ordre pip és un petit programa (substitució de l'script easy_install) per instal·lar i gestionar l'índex de paquets de programari Python.

    A les distribucions CentOS/RHEL, primer heu d'instal·lar el paquet pip (és a dir, python-pip) al vostre sistema per instal·lar el programa PSSH.

    # yum install python-pip
    

    A Fedora 21+, heu d'executar l'ordre dnf en lloc de yum (dnf substituït yum).

    # dnf install python-pip
    

    Un cop hàgiu instal·lat l'eina pip, podeu instal·lar el paquet pssh amb l'ajuda de l'ordre pip tal com es mostra.

    # pip install pssh  
    
    /usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
      InsecurePlatformWarning
    You are using pip version 7.1.0, however version 7.1.2 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
    Collecting pssh
    /usr/lib/python2.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
      InsecurePlatformWarning
      Downloading pssh-2.3.1.tar.gz
    Installing collected packages: pssh
      Running setup.py install for pssh
    Successfully installed pssh-2.3.1
    

    A les distribucions basades en Debian, es triga un minut a instal·lar pssh mitjançant l'ordre pip.

    $ sudo apt-get install python-pip
    $ sudo pip install pssh
    
    Downloading/unpacking pssh
      Downloading pssh-2.3.1.tar.gz
      Running setup.py (path:/tmp/pip_build_root/pssh/setup.py) egg_info for package pssh
        
    Installing collected packages: pssh
      Running setup.py install for pssh
        changing mode of build/scripts-2.7/pssh from 644 to 755
        changing mode of build/scripts-2.7/pnuke from 644 to 755
        changing mode of build/scripts-2.7/prsync from 644 to 755
        changing mode of build/scripts-2.7/pslurp from 644 to 755
        changing mode of build/scripts-2.7/pscp from 644 to 755
        changing mode of build/scripts-2.7/pssh-askpass from 644 to 755
        
        changing mode of /usr/local/bin/pscp to 755
        changing mode of /usr/local/bin/pssh-askpass to 755
        changing mode of /usr/local/bin/pssh to 755
        changing mode of /usr/local/bin/prsync to 755
        changing mode of /usr/local/bin/pnuke to 755
        changing mode of /usr/local/bin/pslurp to 755
    Successfully installed pssh
    Cleaning up...
    

    Com podeu veure a la sortida anterior, la darrera versió de pssh ja està instal·lada al sistema.

    Com puc utilitzar pssh?

    Quan utilitzeu pssh, heu de crear un fitxer d'amfitrió amb el nombre d'amfitrions juntament amb l'adreça IP i el número de port que necessiteu per connectar-vos a sistemes remots mitjançant pssh.

    Les línies del fitxer amfitrió tenen la forma següent i també poden incloure línies en blanc i comentaris.

    192.168.0.10:22
    192.168.0.11:22
    

    Podeu executar qualsevol ordre en diferents o diversos amfitrions Linux d'una xarxa executant una ordre pssh. Hi ha moltes opcions per utilitzar amb pssh, tal com es descriu a continuació:

    Veurem algunes maneres d'executar ordres en diversos hosts utilitzant pssh amb diferents opcions.

    1. Per llegir el fitxer hosts, incloeu l'opció -h host_file-name o –hosts host_file_name.
    2. Per incloure un nom d'usuari predeterminat a tots els amfitrions que no defineixen un usuari específic, utilitzeu l'opció -l nom d'usuari o –user nom d'usuari.
    3. També podeu mostrar la sortida estàndard i l'error estàndard a mesura que finalitzi cada host. Mitjançant l'opció -i o –inline.
    4. És possible que vulgueu fer que les connexions esgotin un cop transcorregut el nombre de segons indicat si inclou l'opció -t number_of_seconds.
    5. Per desar la sortida estàndard a un directori determinat, podeu utilitzar l'opció -o /directory/path.
    6. Per demanar una contrasenya i enviar-la a ssh, utilitzeu l'opció -A.

    Vegem alguns exemples i ús d'ordres pssh:

    1. Per executar echo \Hola TecMint al terminal dels múltiples amfitrions Linux per usuari root i demanar la contrasenya de l'usuari root, executeu aquesta ordre a continuació.

    Important: recordeu que tots els amfitrions s'han d'incloure al fitxer amfitrió.

    # pssh -h pssh-hosts -l root -A echo "Hello TecMint"
    
    Warning: do not enter your password if anyone else has superuser
    privileges or access to your account.
    Password: 
    [1] 15:54:55 [SUCCESS] 192.168.0.10:22
    [2] 15:54:56 [SUCCESS] 192.168.0.11:22
    

    Nota: A l'ordre anterior pssh-hosts hi ha un fitxer amb una llista de l'adreça IP dels servidors Linux remots i el número de port SSH que voleu executar ordres.

    2. Per esbrinar l'ús d'espai en disc a diversos servidors Linux de la vostra xarxa, podeu executar una única ordre de la manera següent.

    # pssh -h pssh-hosts -l root -A -i "df -hT"
    
    Warning: do not enter your password if anyone else has superuser
    privileges or access to your account.
    Password: 
    [1] 16:04:18 [SUCCESS] 192.168.0.10:22
    Filesystem     Type   Size  Used Avail Use% Mounted on
    /dev/sda3      ext4    38G  4.3G   32G  12% /
    tmpfs          tmpfs  499M     0  499M   0% /dev/shm
    /dev/sda1      ext4   190M   25M  156M  14% /boot
    
    [2] 16:04:18 [SUCCESS] 192.168.0.11:22
    Filesystem              Type      Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root xfs        30G  9.8G   20G  34% /
    devtmpfs                devtmpfs  488M     0  488M   0% /dev
    tmpfs                   tmpfs     497M  148K  497M   1% /dev/shm
    tmpfs                   tmpfs     497M  7.0M  490M   2% /run
    tmpfs                   tmpfs     497M     0  497M   0% /sys/fs/cgroup
    /dev/sda1               xfs       497M  166M  332M  34% /boot
    

    3. Si voleu conèixer el temps d'activitat de diversos servidors Linux d'una vegada, podeu executar l'ordre següent.

    # pssh -h pssh-hosts -l root -A -i "uptime"
    Warning: do not enter your password if anyone else has superuser
    privileges or access to your account.
    Password: 
    [1] 16:09:03 [SUCCESS] 192.168.0.10:22
     16:09:01 up  1:00,  2 users,  load average: 0.07, 0.02, 0.00
    
    [2] 16:09:03 [SUCCESS] 192.168.0.11:22
     06:39:03 up  1:00,  2 users,  load average: 0.00, 0.06, 0.09
    

    Podeu veure la pàgina d'entrada manual de l'ordre pssh per obtenir moltes altres opcions per esbrinar més maneres d'utilitzar pssh.

    # pssh --help
    

    Resum

    Paral·lel SSH o PSSH és una bona eina per executar ordres en un entorn on un administrador del sistema ha de treballar amb molts servidors en una xarxa. Facilitarà l'execució remota d'ordres en diferents amfitrions d'una xarxa.

    Esperem que aquesta guia sigui útil i, en cas que hi hagi informació addicional sobre pssh o errors durant la instal·lació o l'ús, no dubteu a publicar un comentari.