Como executar um comando automaticamente após sair do ssh

10

Como executar automaticamente um comando no terminal local depois de sair de uma sshconexão? Existe algum gancho ou evento que possa ser tratado para isso?

Meysam
fonte

Respostas:

13

Alavancar uma aliasou melhor função.

Por exemplo:

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

Agora, você pode executar:

ssh mysite

depois de sair da sshsessão, echo foobarserá executado.

Mude echo foobarcom o comando real que você precisa executar e, é claro, você pode usar vários comandos, se quiser.

Para tornar a definição da função permanente, coloque-a no seu ~/.bashrc.


Observe também que nem sempre é desejável ter a função nomeada como sshquando você deseja usar explicitamente o externo ssh. Nesse caso, você pode usar qualquer um dos seguintes itens para ignorar a sshfunção e obter o sshbinário externo :

command ssh mysite

ou renomeie a função para outra coisa, por exemplo sshfunc:

sshfunc () { ssh "$@"; echo foobar; }
heemail
fonte
4
note: eu recomendo renomear a função para algo que não seja "ssh", para que você mantenha o significado original do ssh ... talvez: ssh2? ou sshcmd? (caso contrário, você poderia esquecer seus efeitos colaterais quando fazendo coisas como: ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgz: este será errado porque conterá "foobar" no final ...)
Olivier Dulac
@OlivierDulac Bom ponto, editado.
heemayl
\ ssh 'ssh' e "ssh" apenas escapam de um alias, o comando ssh executa o comando (escapando do alias e da função).
precisa
@OlivierDulac Não sabia disso, corrigido.
heemayl
É como que em bash, pode talvez variar com outras conchas ... mas agora, eu como a sua resposta com essas adições, você começa o meu +1 ^^
Olivier Dulac