Ejecutar comandos locales en OSX cuando el comando se completa en la sesión ssh

Ejecutar comandos locales en OSX cuando el comando se completa en la sesión ssh

En mi computadora portátil OS/X, puedo escribir "decir hecho" y mi Mac dice "hecho".

Localmente, simplemente haría:

do-something.sh && say done

Y eso me permite jugar en ventanas/escritorios separados hasta que finalice el script.

Pero ahora hago ssh desde mi Mac a una máquina Linux remota. Lo que quiero es poder decirle a mi Mac que ejecute "decir hecho" cuando finalice un comando específico. ¿Alguna buena forma de hacerlo?

Respuesta1

Un saludo a un compañero de trabajo, A Golden, a quien se le ocurrió esto de inmediato. Este es un corta y pega de su respuesta, que funciona y lo concreta por completo.

I picked "say-hi-locally" and set it up on my linux server as:
alias say-hi-locally="echo EMIT SAY HI"

Then, since I use ITerm2 as my local terminal, I set up a trigger in ITerm2 with the regexp "EMIT SAY HI" and told that to run the local command "say hi"

Now I can do:
do-something.sh; say-hi-locally

and when it finishes it will echo "EMIT SAY HI" which ITerm2 will then pick up and then my computer says "hi" to me! :-)

Respuesta2

En tu Mac, inicia un servidor TCP que enviará todo lo que reciba a say:

mac $ while true; do nc -l 1234 | say; done

Luego, cuando uses SSH, úsalo -Rpara reenviar el puerto 1234 a tu servidor:

mac $ ssh -R 1234:localhost:1234 linux

Ahora su servidor Linux debería tener un túnel hacia el servidor nc en su Mac y puede usarlo ncpara enviarle texto:

linux $ echo done | nc localhost 1234

Respuesta3

Necesitarás un servidor ssh en tu mac. Entonces puedes hacer lo siguiente:

[you@mac]$ ssh linux
[you@linux]$ interactive_cmd; ssh mac say done

Usted inicia sesión en su host de Linux, ejecuta el comando, cuando termina, el host de Linux regresa a su Mac y ejecuta el saycomando.

Respuesta4

ssh linux do-something.sh && say done

parece hacer lo que quieres. Implementar alguna comunicación entre el host remoto y su Mac no parece factible.

Si desea ejecutar más comandos y le preocupa la latencia, el uso ControlMastery ControlPersistlas opciones (muchas preguntas al respecto ya han sido respondidas).

información relacionada