Cómo ejecutar automáticamente un comando después de salir de ssh

10

¿Cómo puedo ejecutar automáticamente un comando en el terminal local después de salir de una sshconexión? ¿Hay algún gancho o evento que pueda manejarse para esto?

Meysam
fuente

Respuestas:

13

Aproveche una función aliaso mejor.

Por ejemplo:

ssh () { command ssh "$@"; echo foobar; }

Ahora puedes ejecutar:

ssh mysite

después de salir de la sshsesión, echo foobarse ejecutará.

Cambie echo foobarcon el comando real que necesita ejecutar y, por supuesto, puede agregar varios comandos si lo desea.

Para que la definición de la función sea permanente, colóquela en su ~/.bashrc.


También tenga en cuenta que es posible que no siempre se desee tener la función nombrada como sshcuando desea usar explícitamente el externo ssh. En ese caso, puede usar cualquiera de los siguientes para omitir la sshfunción para obtener un sshbinario externo :

command ssh mysite

o cambie el nombre de la función a otra cosa, por ejemplo sshfunc:

sshfunc () { ssh "$@"; echo foobar; }
heemayl
fuente
44
nota: recomiendo cambiar el nombre de la función a otra cosa que no sea "ssh", para que mantenga ssh su significado original ... tal vez: ssh2? o sshcmd? (de lo contrario, podría olvidar sus efectos secundarios al hacer cosas como: ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgzesto estará mal, ya que contendrá "foobar" al final ...)
Olivier Dulac
@OlivierDulac Buen punto, editado.
heemayl
\ ssh 'ssh' y "ssh" solo escapan de un alias, el comando ssh ejecutará el comando (escapando tanto del alias como de la función).
Olivier Dulac
@OlivierDulac No lo sabía, arreglado.
heemayl
Es así en bash, tal vez puede variar con otros proyectiles ... pero ahora, me gusta tu respuesta con esas adiciones, obtienes mi +1 ^^
Olivier Dulac