Cuando alguien tiene que administrar muchos servidores se plantea la pregunta de como hacer esas conexiones múltiples con los nodos para lanzar tareas comunes en todos ellos. Rápidamente viene a la mente terminator, un emulador de terminal que nos deja lanzar conexiones con los servidores que queremos administrar y agrupar estas conexiones, como si de una sola terminal se tratase, haciendo que lo que escribamos en el terminal del grupo, se lleve al resto de conexiones que están en ese grupo.
Pero hay otra herramienta más interesante, pdsh, que nos permite lanzar la ejecución de comandos en los equipos remotos que indiquemos, generando un log del resultado, que puede ser tratado posteriormente para saber como fue la ejecución en cada host. Incluso proporciona herramientas para el tratamiento de este log, agrupando las cosas comunes en el resultado de la ejecución. Por eso pdsh es la solución adecuada para tareas desatendidas, que combinada con el uso de claves publicas/privadas, nos simplifican la vida enormemente.
Lo interesante de pdsh es la posibilidad de indicar los equipos a los que conectarnos utilizando expresiones pseudoregulares o procedentes de la entrada estándar o desde un fichero en la que aparece un host por línea. No queda la cosa aquí, también es posible emplearlo junto a nodeattr, que es una herramienta que permite buscar en un fichero de texto que hace las funciones de una base de datos en el que guardamos nombres de hosts junto con atributos (tipo de hosts, red, tipo de conexión).
Ejemplos de uso:
el fichero hosts.pdsh contiene un nombre de servidor por línea. De todas formas, el man de pdsh es bastante completo, con lo que veo innecesario extenderme más.$ pdsh -w 10.10.10.[2-9] -R ssh "find /usr/local/bin -iname hola* -exec ls -al {} \; "$ pdsh -w ^hosts.pdsh -R ssh "find /usr/local/bin -iname hola* -exec ls -al {} \; "
Por último, hay otra posibilidad, que desconocía y que localice en un blog altamente recomendable Seguridad en Sistema y Tecnicas de Hacking, es utilizar fanout y fanterm. Aunque creo que pdsh trabajando conjuntamente con nodeattr, cubre la mayor parte de los escenarios en los que nos encontremos.