Pssh – herramienta para ejecutar comandos en múltiples servidores vía ssh

Recientemente, en un curso impartido en la empresa donde trabajo, el instructor utilizó una herramienta muy interesante, llamada Pssh, que nos permite ejecutar comandos en múltiples servidores, vía ssh, de manera simultanea. Así que de eso va el artículo 🙂

Un poco sobre SSH

Está claro, OpenSSH es una herramienta fundamental para cualquier administrador de sistemas, incluso para usuarios domésticos. Que nos permite conectarnos de manera remota y segura a los servidores que administramos.

El problema es que cuando queremos ejecutar un comando en más de un servidor, debemos tirar de scripts, ya que esa función no viene predeterminada.  En esta parte del partido es donde entra Parallel SSH o Pssh.

Se trata de una aplicación escrita en python, que nos permite ejecutar comandos de manera paralela (de ahí el nombre)

Realmente se puede considerar PSSH  como una caja de herramientas, ya que incluye diferentes programas que nos permiten interactuar con diferentes hosts de manera simultanea. Estas son:

  • pssh – Tal y como hemos comentado permite ejecutar comandos en múltiples hosts de manera simultanea
  • pnuke – Permite matar los mismos procesos en múltiples hosts de manera paralela
  • pscp – Un programa dedicado a copiar ficheros de manera paralela en múltiples hosts
  • prsync – Se encarga de copiar ficheros en múltiples hosts
  • pslurp – Copia ficheros desde múltiples hosts remotos hacia un único host

Instalación de Pssh

En sistemas basados en RHEL como Fedora o Centos, la instalación es la siguiente. Primero de todo hemos de instalar el paquete python-pip, que nos permitirá instalar paquetes escritos en python en el host.  Depende de la versión de nuestro sistema operativo, debemos utilizar el comando yum o dnf. De este programa ya hablé en un artículo anterior.

Sería así:

1
2
3
4
5
#Utilizando yum, previamente instalado el repositorios EPEL
yum install epel-release -y
yum install python-pip
#Utilizando dnf
dnf install pyton-pip

Una vez instalado este paquete, sólo debemos escribir:

1
pip install pssh

Continuemos.

En sistemas basados en Debian, Ubuntu, LinuxMint y resto de fauna y flora , sería como sigue:

1
2
3
4
5
6
#En sistemas viejunos
sudo apt-get install python-pip
#En sistemas más actuales
sudo apt install python-pip
#En ambos casos, el segundo paso:
pip install pssh

En sistemas tipo Arch, podemos encontrar información sobre el paquete en el repositorio AUR.

Por último, que no menos importante, en sistemas SLES y OpenSUSE, podemos utilizar la siguiente instalación. Aunque lo más probable es que ya venga instalado por defecto.

Trabajando con PSSH

La forma de utilizar el comando es crear un ficheros, donde indicaremos todos los hosts a los que nos conectaremos de forma habitual. Vamos a crear un fichero con los datos:

1
2
3
4
5
#Creamos el fichero
vi /home/davidochobits/servidores
#Añadimos los servidores habituales
[usuario@]IP_del_servidor[:puerto]
....

Para que no nos pida la contraseña, lo ideal es que tengamos el intercambio de llaves hecho con estos servidores.

De hecho, si no realizamos dicho intercambio, nos aparecerá el siguiente mensaje:

1
2
Stderr: pssh error: SSH requested a password. Please create SSH keys or use
the -A option to provide a password.

Para ejecutar el comando sería:

1
2
#Un ejemplo
pssh -i -h servidores uptime

Laboratorio de pruebas

A modo de muestra he realizado varias pruebas en hosts virtuales, en una red local. Una vez añadida la información de los servidores, en el fichero /etc/hosts y realizado el intercambio llaves (podéis seguir este tutorial), ya podemos ver el programa en funcionamiento:

Si queremos ampliar información sobre el comando, siempre podemos consultar su página de man o bien utilizar la ayuda pssh --help

Mientras escribía el artículo escuchaba la música de la banda Tool

Nos vamos leyendo ^.^

4 Respuestas

  1. victorhck dice:

    interesante opción!! 🙂

  2. Eduardo dice:

    Saludos Amigo, una consulta, cuando ejecuto el pssh de la siguiente forma: pssh -lroot -h pssh-serv.txt -i uptime
    Me muestra este error:

    Traceback (most recent call last):
    File “/usr/local/bin/pssh”, line 26, in
    from psshlib.cli import common_parser, common_defaults
    File “/usr/local/lib/python3.6/site-packages/psshlib/cli.py”, line 9, in
    import version
    ModuleNotFoundError: No module named ‘version’

    tengo instalado la version de python: 3.5.3-1 (debian 9)

    Habias visto este error, no logro conseguir nada en la web.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies
A %d blogueros les gusta esto: