Solución 1:
-
Tejido
Defina sus tareas primero:
from fabric.api import * @parallel @hosts('192.168.3.118', '192.168.6.142') def hostname(): run('hostname')
Luego ejecutando a través del
fab
herramienta de línea de comandos:$ fab -f /path/to/.py/file hostname [192.168.3.118] Executing task 'hostname' [192.168.6.142] Executing task 'hostname' [192.168.6.142] run: hostname [192.168.3.118] run: hostname [192.168.6.142] out: SVR040-6142 [192.168.3.118] out: SVR040-3118.localdomain Done.
- Administrador de conexiones de Gnome
- Gerente de PAC
Solución 2:
Eche un vistazo a Rundeck - http://rundeck.org/
Solución 3:
Puede hacer todo lo posible e instalar un sistema de gestión de configuración como Puppet o Chef. No ha mencionado cuántos nodos está tratando de administrar, por lo que esto podría ser excesivo, pero, ciertamente, puede controlar de manera centralizada muchas máquinas de esta manera. Si eres pequeño en este momento, pero estás creciendo, es posible que también quieras configurar, por ejemplo, Chef, antes de que seas mucho más grande.
Si necesita ejecutar comandos ad hoc sobre un conjunto específico de nodos, puede hacer algo como knife ssh 'roles:webserver' 'hostname'
(knife es la herramienta de línea de comando para chef) para ejecutar el hostname
comando para todos los nodos que tienen la función de servidor web.
Solución 4:
Prefiero shmux para ejecutar el mismo comando en muchos hosts en paralelo.
Solución 5:
Utilizo secuencias de comandos expect para automatizar los inicios de sesión (especialmente porque tengo que pasar por un jumb box e ingresar en un chroot y se deben ingresar muchas contraseñas) e hice algunos "ajustes" en la configuración de cssh. Entonces, tengo esto " script principal" en mi carpeta bin que, dado un "nombre/alias de servidor", me lleva al servidor que quiero y donde quiero.
En ~/.clusterssh/config, configuré el parámetro "ssh" para que apunte a mi script, también "ssh_args" debe establecerse en algún argumento inocuo/falso, eso es porque cssh tiene su lista de argumentos predeterminada, si se deja vacío en realidad la lista predeterminada terminará siendo la del script.
Entonces el script (en cada ventana/terminal) recibirá estos argumentos y 1 de los argumentos dados al cssh, el script lo recupera de un archivo para el servidor dado, las credenciales configuradas y los pasos que debe seguir para llegar a donde Quiero, luego llama al "código de espera" con todos esos datos.
~/.clusterssh/config
ssh=/home/user/bin/qs.sh
ssh_args=-a
qs.sh
#!/bin/bash
export PATH=~/bin:$PATH
shift
case $1 in
q4|q5|q6|q7|q8|q9)
essh [email protected]$1
### essh it's some little bash script that does the things I said before and in the end it launches the expect
;;
q1|q2|q3)
essh [email protected]$1
;;
*)
echo "GOOH"
esac
así que normalmente lo llamo con algo como esto
# cssh q4 q5 q6 q7
también funciona con "alias de clúster" teniendo el clúster "qAll q4 q5 q6 q7" Puedo llamar con cssh qAll
Espero que ayude a alguien más.