Executando comando remoto antes que o servidor remoto encerre a conexão

0

Então eu pesquisei isso, mas não encontrei nada que abordasse isso. Eu freqüentemente me conecto a um servidor remoto através do ssh no qual não tenho permissões sudo.

Digamos que a conexão seja encerrada / redefinida pelo servidor remoto por inatividade ou por outros motivos. Agora tudo que eu quero é que antes que o servidor remoto termine minha conexão, ele deve executar um pwd . Eu sei que existem maneiras de prolongar / impedir que o servidor remoto encerre sua conexão, mas eu gostaria que ele executasse um comando personalizado de minha escolha antes da rescisão

    
por Shachit Iyer 19.05.2018 / 00:20

2 respostas

0

No Bash, você pode configurar um trap para EXIT para que o shell execute um comando quando ele sair:

trap 'do something here' EXIT

Isso funciona para shells saindo do final da entrada ( ^D ), timeout até TMOUT , sendo disparado com SIGTERM ou SIGHUP e shells remotas sobre SSH onde o cliente SSH morre.

No entanto, ao executar o SSH (ou outra conexão de rede), o shell não pode reagir ao fechamento da conexão antes de estar realmente fechado, portanto, qualquer coisa que for impressa não chegará ao outro lado nesse ponto. Você poderia executar um comando que modifica as coisas no final remoto, mas algo como pwd , que apenas imprime coisas, não fará nada de útil.

Se você quiser o último diretório de trabalho mostrado, você pode fazer com que o shell o imprima no prompt, com o \w escape.

    
por 19.05.2018 / 01:11
0

Similarmente à resposta do ilkkachu , você pode criar ~/.bash_logout com um conjunto de comandos para executar quando o% O shell de loginbash é encerrado. E, de forma semelhante ao problema em sua resposta, isso não seria executado se a conexão SSH fosse encerrada.

    
por 26.07.2018 / 12:33