Jak automatycznie uruchomić polecenie po wyjściu z ssh

10

Jak mogę automatycznie uruchomić polecenie na lokalnym terminalu po wyjściu z sshpołączenia? Czy istnieje jakiś haczyk lub zdarzenie, które można by obsłużyć w tym celu?

Meysam
źródło

Odpowiedzi:

13

Wykorzystaj aliaslub lepiej funkcję.

Na przykład:

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

Teraz możesz uruchomić:

ssh mysite

po wyjściu z sshsesji echo foobarzostanie uruchomiony.

Zmieniaj echo foobarza pomocą rzeczywistego polecenia, które chcesz uruchomić, i oczywiście możesz przypisać wiele poleceń, jeśli chcesz.

Aby definicja funkcji była trwała, umieść ją w swoim ~/.bashrc.


Należy również pamiętać, że nie zawsze może być pożądane, aby nazwa funkcji była taka, jak w sshprzypadku jawnego użycia zewnętrznego ssh. W takim przypadku możesz użyć dowolnej z poniższych opcji, aby pominąć sshfunkcję uzyskania zewnętrznego sshpliku binarnego:

command ssh mysite

lub zmień nazwę funkcji na inną, np . sshfunc:

sshfunc () { ssh "$@"; echo foobar; }
heemayl
źródło
4
Uwaga: Polecam zmianę nazwy funkcji na coś innego niż „ssh”, więc zachowaj ssh, to oryginalne znaczenie ... może: ssh2? lub sshcmd? (w przeciwnym razie możesz zapomnieć o jego skutkach ubocznych podczas robienia takich rzeczy ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgz:: to będzie źle, ponieważ na końcu będzie zawierać „foobar”)
Olivier Dulac
@OlivierDulac Good point, edytowany.
heemayl
\ ssh 'ssh' i "ssh" uciekają tylko od aliasu, polecenie ssh uruchomi polecenie (uciekając zarówno od aliasu, jak i funkcji).
Olivier Dulac,
@OlivierDulac Nie wiedziałem o tym, naprawiono.
heemayl
To jest tak, że w bash, może różnić się od innych pocisków ... ale teraz podoba mi się twoja odpowiedź z tymi dodatkami, dostajesz moje +1 ^^
Olivier Dulac