Utilice Terminal.app a ssh para múltiples hosts

3

¿Hay alguna aplicación o "truco" para usar la Terminal para duplicar los comandos a diferentes hosts ssh (grupos, generalmente)?

No quiero usar otra aplicación de terminal.

EDIT: 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 donde pueda emitir manualmente comandos duplicados a diferentes servidores mientras estoy trabajando en ellos, no un script o un sistema (como Puppet) para emitir solo comandos conocidos. Es por eso que mencioné que odio a los que probé (iTerm2, etc.) por el aspecto y la sensación.

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

maraboshi
fuente
No entiendo tu pregunta
CousinCocaine
@CousinCocaine porque la edición eliminó la pregunta original ... si usa iTerm2, sabe que puede ssh a varios hosts (entre otras cosas) y emitir en ellos el mismo comando. Ahora, si también usa Apple terminal.app, notará que 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 controle varios hosts. ¿O qué alternativas hay, excluyendo terminator y csshx?
maraboshi
¿Qué se entiende por "comandos espejo"? ¿Qué es un "comando reflejado"?
l --marc l
Significa que mientras escribe, la entrada va a múltiples terminales (de modo que todos los servidores) y no tiene que escribirla por separado en cada terminal.
maraboshi

Respuestas:

5

Puedes escribir un script de shell y ponerlo en ~ / .bashrc de esta manera:

function do_some_thing() {
  command="fab -R localhost deploy --set sha=master"
  ssh -t [email protected] -C "$command"
  ssh -t [email protected] -C "$command"
  ssh -t [email protected] -C "$command"
  ssh -t [email protected] -C "$command"
}

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

court3nay
fuente
1
Este es un truco obvio, pero muy bueno. También puede crear un script de shell que haga algo similar y tome el command como una entrada ( $1 ).
CousinCocaine
1
Me gustaría agregar Ansible a la lista de herramientas recomendadas (tiene sus propias ventajas, como ser un agente sin agente y un poco menos intimidante de aprender).
willWorkForCookies
Gracias chicos, pero eso no es lo que necesito, por favor vea la edición (de la edición :-))
maraboshi
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 varios 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 perdieras, el 'comando' de arriba puede ser de $ 1, así que harías $ do_some_thing rm /var/log/system.log para eliminar system.log en todos los hosts.
court3nay
@ court3nay ya uso Puppet para administrar cosas, pero hay muchas razones para ssh y hacer cosas manuales :-)
maraboshi
1

Puedes usar pdsh, incluso si tienes que Chef será más rápido. con Chef, la búsqueda con cuchillo (inherente en knife-ssh) es una operación costosa, pero puede volcar los resultados de la búsqueda knife search node role:base -i > base.nodes y luego use 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. pdsh viene con una herramienta complementaria dshbak que puede resumir la salida de los hosts en un informe conveniente para usted también.

solo asegúrese de no realizar una gestión única a una escala masiva con herramientas como esta. es ideal para la auditoría y el inicio de trabajos, pero no es un reemplazo para la administración de configuraciones.

Jake Plimack
fuente
Gracias Jake, pero necesito SSH en los hosts, no simplemente ejecutar comandos sobre la marcha. Necesito la concha.
maraboshi
1
entonces hay cluster-ssh brew install csshx para Terminal.app o gem install i2cssh para iterm2
Jake Plimack