Use Terminal.app para ssh a múltiples hosts

¿Hay alguna aplicación o "truco" para usar Terminal para duplicar comandos en diferentes hosts ssh (clusters, por lo general)?

No quiero usar otra aplicación de terminal.

EDITAR: lo siento, pero la revisión de timothymh en realidad hizo que el significado de mi pregunta fuera diferente. Lo que me gustaría es una aplicación en la que pueda emitir manualmente comandos duplicados a diferentes servidores mientras trabajo en ellos, no un script o un sistema (como Puppet) para simplemente emitir comandos conocidos. Es por eso que mencioné que odio los que probé (iTerm2, etc.) debido a la apariencia.

Me gusta la forma en que se comporta y se ve la aplicación de terminal estándar en términos de fuentes, asignación de teclado, forma de desplazarse hacia arriba y hacia abajo, etc.

no entiendo tu pregunta
@CousinCocaine porque la edición eliminó la pregunta original ... si usa iTerm2, sabe que puede conectarse a varios hosts (entre otras cosas) y emitirles el mismo comando. Ahora, si también usa la aplicación de terminal de Apple, notará cómo la apariencia es diferente, el teclado se asigna de manera diferente, la rueda de desplazamiento actúa de manera diferente. No me gusta iTerm2, me gustaría que terminal.app controlara varios hosts. ¿O qué alternativas existen, excluyendo Terminator y csshx?
¿Qué se entiende por "comandos espejo"? ¿Qué es un "comando reflejado"?
Significa que mientras escribe, la entrada va a múltiples terminales (es decir, a todos los servidores) y no tiene que escribirla por separado en cada uno.

Respuestas (2)

Puede escribir un script de shell y ponerlo en ~/.bashrc así:

function do_some_thing() {
  command="fab -R localhost deploy --set sha=master"
  ssh -t ubuntu@1.2.3.4 -C "$command"
  ssh -t ubuntu@1.2.3.5 -C "$command"
  ssh -t ubuntu@1.2.3.6 -C "$command"
  ssh -t ubuntu@1.2.3.7 -C "$command"
}

Sin embargo, hay varias herramientas que puede usar para este tipo de actividad, como Chef o Capistrano u otras.

Este es un truco obvio, pero genial. También puede crear un script de shell que haga algo similar y tome commandcomo entrada ( $1).
Agregaría Ansible a la lista de herramientas recomendadas (tiene sus propias ventajas, como no tener agentes y un poco menos intimidante de aprender).
Gracias chicos, pero eso no es lo que necesito, vean la edición (de la edición :-))
Recomiendo encarecidamente algo como las herramientas mencionadas: ansible, chef, puppet, capistrano o docker, para hacer su trabajo de administrador de sistemas. Escribir comandos manualmente en múltiples hosts no es la forma eficiente, moderna o profesional de hacer sysadmin. Tal vez tengas tus razones :) también, en caso de que te lo hayas perdido, el 'comando' anterior puede ser solo $ 1, por lo que harías $ do_some_thing rm /var/log/system.logpara eliminar system.log en todos los hosts.
@court3nay Ya uso Puppet para administrar las cosas, pero hay muchas razones para hacer ssh y hacer cosas manuales :-)

puede usar pdsh, incluso si tiene Chef, será más rápido. con Chef, la búsqueda de cuchillos (inherente a cuchillo-ssh) es una operación costosa, pero puede volcar los resultados de la búsqueda knife search node role:base -i > base.nodesy luego usar pdsh (escrito en C) para operar en el set (obviamente, puede hacer esta parte sin Chef ). pdsh -w^base.nodes "sudo whoami"o lo que sea. pdshviene con una herramienta complementaria dshbakque también puede resumir la salida de los hosts en un informe conveniente para usted.

solo asegúrese de que no está haciendo una gestión única a gran escala utilizando herramientas como esta. es excelente para auditar y comenzar trabajos, pero no es un reemplazo para la administración de configuraciones.

Gracias Jake, pero necesito SSH en los hosts, no simplemente para ejecutar comandos sobre la marcha. Necesito la concha.
luego hay cluster-ssh brew install csshxpara Terminal.app o gem install i2csshpara iterm2