Come eseguire automaticamente un comando dopo essere usciti da ssh


10

Come posso eseguire automaticamente un comando sul terminale locale dopo essere uscito da una sshconnessione? C'è qualche hook o evento che potrebbe essere gestito per questo?

Risposte:


13

Sfrutta una aliaso meglio una funzione.

Per esempio:

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

Ora puoi eseguire:

ssh mysite

dopo essere usciti dalla sshsessione, echo foobarverrà eseguito.

Cambia echo foobarcon il comando effettivo che devi eseguire e, naturalmente, puoi virare su più comandi se lo desideri.

Per rendere permanente la definizione della funzione, inserirla in ~/.bashrc.


Inoltre, potrebbe non essere sempre desiderato avere la funzione denominata come sshquando si desidera utilizzare esplicitamente l'esterno ssh. In tal caso, è possibile utilizzare uno dei seguenti per saltare la sshfunzione per ottenere un sshbinario esterno :

command ssh mysite

o rinominare la funzione in qualcos'altro, ad esempio sshfunc:

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

4
nota: ti consiglio di rinominare la funzione con qualcosa di diverso da "ssh", quindi mantieni ssh il suo significato originale ... forse: ssh2? o sshcmd? (altrimenti potresti dimenticare i suoi effetti collaterali quando fai cose come:: ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgzquesto sarà sbagliato in quanto conterrà "foobar" alla fine ...)
Olivier Dulac,

@OlivierDulac Buon punto, modificato.
Hememl

\ ssh 'ssh' e "ssh" sfuggono solo ad un alias, il comando ssh eseguirà il comando (sfuggendo sia all'alias che alla funzione).
Olivier Dulac,

@OlivierDulac Non lo sapevo, riparato.
Hememl

È così che a bash, può forse variare con altre conchiglie ... ma ora, mi piace la tua risposta con quelle aggiunte, ottieni il mio +1 ^^
Olivier Dulac,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.