Comment exécuter automatiquement une commande après avoir quitté ssh

10

Comment puis-je exécuter automatiquement une commande sur le terminal local après avoir quitté une sshconnexion? Y a-t-il un crochet ou un événement qui pourrait être géré pour cela?

Meysam
la source

Réponses:

13

Tirez parti d'une aliasou mieux d'une fonction.

Par exemple:

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

Maintenant, vous pouvez exécuter:

ssh mysite

après avoir quitté la sshsession, echo foobarsera exécuté.

Changez echo foobaravec la commande réelle que vous devez exécuter, et bien sûr, vous pouvez clouer plusieurs commandes si vous le souhaitez.

Pour rendre la définition de fonction permanente, placez-la dans votre ~/.bashrc.


Notez également qu'il n'est pas toujours souhaitable que la fonction soit nommée comme sshlorsque vous souhaitez utiliser explicitement l'externe ssh. Dans ce cas, vous pouvez utiliser l'une des options suivantes pour ignorer la sshfonction afin d'obtenir un sshbinaire externe :

command ssh mysite

ou renommer la fonction en quelque chose d'autre, par exemple sshfunc:

sshfunc () { ssh "$@"; echo foobar; }
heemayl
la source
4
note: je recommande de renommer la fonction en quelque chose d'autre que "ssh", donc vous gardez ssh c'est sa signification originale ... peut-être: ssh2? ou sshcmd? (sinon vous pourriez oublier ses effets secondaires en faisant des choses comme:: ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgzce sera faux car il contiendra "foobar" à la fin ...)
Olivier Dulac
@OlivierDulac Bon point, édité.
heemayl
\ ssh 'ssh' et "ssh" n'échappe qu'à un alias, la commande ssh exécutera la commande (en échappant à la fois à l'alias et à la fonction).
Olivier Dulac
@OlivierDulac Je ne savais pas cela, corrigé.
heemayl
C'est comme ça en bash, ça peut peut-être varier avec d'autres shells ... mais maintenant, j'aime bien ta réponse avec ces ajouts, tu reçois mon +1 ^^
Olivier Dulac