GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo ejecutar un solo comando en múltiples sistemas remotos a la vez

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. 22 es el número de puerto ssh. Debe mencionar el número de puerto correcto si ya lo ha cambiado. Además, asegúrese de poder acceder a todos los hosts remotos desde su sistema local a través de ssh.

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.


Linux
  1. ¿Cómo cambiar el nombre de varios archivos en un solo comando o secuencia de comandos en Unix?

  2. Cómo cambiar el nombre de varios archivos a la vez en Linux

  3. ¿Cómo ejecutar múltiples procesos Tor a la vez con diferentes direcciones IP de salida?

  4. linux:cómo ejecutar un comando en un directorio dado

  5. ¿Cómo puedo ejecutar un comando después del arranque?

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo usar el comando SFTP para transferir archivos

Cómo ejecutar el comando Sudo sin contraseña

Cómo ejecutar comandos de Linux en segundo plano

Cómo ejecutar múltiples comandos de Linux en un solo comando

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux