Hace un tiempo, publicamos una guía para "copiar un archivo a varios directorios en la línea de comandos en Linux" . En ese artículo, le enseñamos varios métodos para copiar un solo archivo en varios directorios a la vez. Hoy, vamos a ver cómo ejecutar un solo comando en múltiples sistemas remotos a la vez en sistemas operativos similares a Unix. Como ya sabe, podemos acceder y comunicarnos con el sistema remoto usando ssh. openSSH nos permite realizar todo tipo de tareas de administración en un sistema remoto. Una limitación de openSSH es que no podemos ejecutar un único comando en varios sistemas remotos a la vez. No hay problema. Aquí es donde PSSH viene a llenar este vacío.
Descargar - Guía gratuita:"Guía de programación del módulo kernel de Linux"PSSH , o P aralell SSH , es un conjunto de línea de comandos que lo ayuda a realizar ssh en paralelo en varios hosts. El paquete PSSH consta de los siguientes comandos:
- pssh - SSH a múltiples sistemas remotos en paralelo,
- pscp - Copiar archivos en paralelo a varios hosts,
- prsync : Copiar archivos en paralelo a varios hosts,
- pnuke : Eliminar procesos en paralelo en varios hosts,
- sorber :Copie archivos en paralelo desde varios hosts.
En este tutorial, veremos cómo ejecutar un único comando en varios hosts a la vez mediante PSSH.
Instalar PSSH
Podemos instalar fácilmente PSSH usando PIP , un administrador de paquetes de python.
Para instalar PIP en Arch Linux y sus derivados, ejecute:
$ sudo pacman -S python-pip
En RHEL, Fedora, CentOS:
$ sudo yum install epel-release
$ sudo yum install python-pip
O,
$ sudo dnf install epel-release
$ sudo dnf install python-pip
En Debian, Ubuntu, Linux Mint:
$ sudo apt-get install python-pip
Para obtener más detalles sobre la administración de paquetes de python mediante PIP, consulte el siguiente enlace.
- Cómo administrar paquetes de Python usando Pip
Una vez instalado PIP, ejecute el siguiente comando para instalar PSSH.
$ sudo pip install pssh
PSSH ha sido instalado! Avancemos y veamos cómo usarlo.
Ejecute un solo comando en varios sistemas remotos a la vez mediante PSSH
Importante: Para usar PSSH (solo para los fines de este tutorial), todos sus sistemas remotos deben tener un nombre de usuario común con la misma contraseña . De lo contrario, este método no ayudará. Digamos, por ejemplo, que ya he creado un usuario llamado sk con contraseña ostechnix en todos mis hosts remotos. También debe tener un mismo usuario con la misma contraseña en todos sus sistemas remotos.
Ahora, veamos cómo ejecutar un solo comando en múltiples hosts remotos usando PSSH. Vaya a su sistema local donde desea ejecutar el comando y cree un archivo de texto llamado remotehosts.txt . Puedes nombrarlo como quieras.
$ vi remotehosts.txt
Agregue direcciones IP de sus hosts remotos con números de puerto uno por uno como se muestra exactamente a continuación.
192.168.1.103:22 192.168.1.104:22
Donde, 192,168.1.103 y 192.168.1.104 son las direcciones IP de mis sistemas remotos.
Ahora, verifiquemos el tiempo de actividad de ambos hosts remotos desde nuestro sistema local. Para hacerlo, ejecute:
$ pssh -h remotehosts.txt -l sk -A -i "uptime"
Aquí,
- hosts remotos.txt - Contiene las direcciones IP de ambos sistemas remotos.
- sk - el nombre de usuario de ambos sistemas remotos
Introduzca la contraseña del usuario "sk" .
Salida de muestra:
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
Como puede ver arriba, ejecutamos el comando "tiempo de actividad" en dos hosts remotos y obtuvimos el resultado de una sola vez.
¿Qué pasa con la versión del núcleo? Para verificar la versión instalada de ambos hosts remotos, ejecute:
$ pssh -h remotehosts.txt -l sk -A -i "uname -r"
Salida de muestra:
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
Muy bueno, ¿no? ¿Podemos crear un directorio en ambos hosts remotos a la vez? ¡Sí, claro! Para hacerlo, ejecute el siguiente comando:
$ pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"
Del mismo modo, puede hacer lo que quiera en varios hosts remotos desde su sistema local mediante PSSH.
Importante: Tenga mucho cuidado al usar PSSH. Un mal comando se ejecutará simultáneamente en múltiples hosts y dañará todos los hosts. Por lo tanto, tenga mucho cuidado al usar este método en producción. Le sugiero que pruebe esto en una máquina virtual. Una vez que esté familiarizado con PSSH, puede usarlo en producción si lo desea.
Lectura sugerida:
- DSH:ejecute un comando de Linux en varios hosts a la vez
- Ejecutar comandos en sistemas Linux remotos a través de SSH
Espero que esto ayude.