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í:
#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:
pip install pssh
Continuemos.
En sistemas basados en Debian, Ubuntu, LinuxMint y resto de fauna y flora , sería como sigue:
#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:
#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:
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:
#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 ^.^