Ejecutar un comando en varios servidores SSH
Por Lucas Russo, desarrollador de SSHive · Actualizado el
Un bucle de shell, tmux, Ansible o la barra de difusión de SSHive: en qué destaca cada uno, con los comandos exactos, para elegir el adecuado según la tarea.
Comprobar el espacio libre en seis servidores, reiniciar el mismo servicio en todos, averiguar qué versión de OpenSSL tiene cada uno: tareas así aparecen cada semana, y hay cuatro formas sensatas de hacerlas desde un Mac. Tres solo necesitan herramientas que quizá ya tienes. La cuarta, la barra de difusión de SSHive, escribe en las sesiones que ya tienes abiertas. Cada paso de abajo es un método, con el comando para copiar y el punto en el que deja de ser la herramienta adecuada. Todos dan por hecho que entras con clave y no con contraseña: la guía de claves SSH lo prepara.
Paso a paso
Un bucle de shell: automatizable, un servidor tras otro
En el Terminal:for h in web1 web2 web3; do echo "== $h"; ssh -o BatchMode=yes "$h" 'df -h /'; done. Los nombres pueden ser alias Host de~/.ssh/config.BatchMode=yeshace que ssh falle en lugar de quedarse parado en una petición de contraseña, por eso las claves van primero. La salida llega en orden, un host tras otro, fácil de guardar en un archivo o de comparar con la de la semana pasada. Sirve para todo lo que no es interactivo; no sabe responder a una pregunta ni manejar un editor, y con muchos hosts es lento, porque cada uno espera al anterior.tmux: un teclado, varias shells en vivo
Instala tmux (brew install tmux), abre una ventana y divídela en un panel por servidor conCtrl-b %(lado a lado) oCtrl-b "(apilados), y lanzassha un servidor en cada uno. PulsaCtrl-b :y escribesetw synchronize-panes on: todo lo que escribas va ahora a todos los paneles de esa ventana, incluidas las respuestas a preguntas y las teclas dentro de programas a pantalla completa, y los ves todos a la vez.setw synchronize-panes offdevuelve a cada panel su propio teclado. No hay nada que instalar en los servidores; es la herramienta para trabajo interactivo en un puñado de máquinas.Ansible ad hoc: en paralelo, con un informe por host
ansible all -i 'web1,web2,web3,' -a 'df -h /'ejecuta el comando en los tres hosts, cinco a la vez por defecto (-flo cambia), y muestra cada resultado bajo el nombre del host con su estado. La coma final le dice a Ansible que la lista es un inventario, no un nombre de archivo. Necesita Ansible en el Mac y Python en los servidores, y es la herramienta adecuada en cuanto algo puntual se convierte en una rutina semanal: ese es el momento de pasarlo a un playbook.La barra de difusión de SSHive: las sesiones que ya tienes abiertas (Pro)
Conéctate a cada servidor; cada uno es una pestaña SSH. Haz clic en el botón de difusión de la barra de herramientas del terminal: se abre encima del terminal una barra naranja DIFUSIÓN con un contador, Sesiones (N). Escribe el comando en el campo propio de la barra y pulsa Intro, o haz clic en Enviar. SSHive lo escribe en cada sesión SSH conectada, seguido de Intro, un aviso confirma cuántas sesiones lo recibieron y la salida de cada servidor queda en su propia pestaña. No hay selección por sesión ni grupos guardados: para dejar fuera un servidor, desconéctalo antes. Escape en el campo, o la ×, cierra la barra. La difusión es de Pro y solo existe en la app de Mac; en la versión gratuita el botón lleva la etiqueta PRO.
Preguntas frecuentes
¿Cuál de las cuatro debo usar?+
¿Puedo difundir solo a una parte de las sesiones?+
¿La difusión está en la app de iPhone y iPad?+
Funciones de SSHive relacionadas
Modo difusión
Ejecución en varios servidores
Terminal SSH
Terminal acelerado por GPU
Comandos rápidos
Biblioteca de comandos reutilizables
Prueba SSHive gratis en macOS
Consigue el cliente todo en uno de SSH, SFTP, RDP y VNC para Mac. Descarga gratuita, sin registro.
Descargar SSHive gratis