Como executar um script em um host remoto quando perco a conexão com ele?

3

Estou trabalhando com o BeagleBone Black, que executa o Debian Linux, e às vezes eu perco conexão sem fio com ele enquanto estou testando meus programas. Isso não seria necessariamente um problema por conta própria, mas, como eu estou rodando em um robô, coisas ruins podem acontecer se eu não conseguir parar qualquer programa que esteja rodando nele. Existe uma maneira para o BBB (ou Linux em geral) para detectar quando eu perdi a conexão a ele e responder no programa em execução no momento ou para executar um script separado para forçar tudo para um estado seguro? Eu fiz uma pequena leitura e tentei usar o SIGHUP, mas isso não funcionou (os motores continuaram funcionando depois de eu ter forçado a morte do processo SSH local).

    
por Wes Tarro 12.04.2015 / 21:00

3 respostas

3

Você pode ter algum tipo de script de watchdog rodando que requer um sinal através da conexão remota a cada n (mili) segundos e fazer algo quando não receber o sinal.

Veja Como introduzir timeout para scripts de shell? para um exemplo de um expect -script que imprime uma mensagem no tempo limite; você pode alterá-lo para criar um desligamento seguro.

O eco do watchdog (localhost) e o expect (robot) devem passar pelo mesmo ssh connect, por ex. via encaminhamento de porta ssh. Assim, quando você perder a conexão ssh, o watchdog também será desligado e iniciará o script de estacionamento seguro.

    
por 12.04.2015 / 21:22
0

Eu não sei o BBB, mas como disse heemail você pode usar a tela (ou tmux que eu acho mais amigável).

Essas ferramentas permitem que você se conecte a uma máquina remota, faça o que quiser (iniciando um script, por exemplo), desconecte a sessão e reconecte-a mais tarde. A vantagem do tmux é que ele permite criar facilmente várias sessões na máquina e dividi-las em diferentes abas.

É o que você está procurando?

    
por 13.04.2015 / 02:28
0

Você pode querer investigar mosh , que é como o ssh modificado para conexões não confiáveis. Do site :

Mosh (mobile shell) Remote terminal application that allows roaming, supports intermittent connectivity, and provides intelligent local echo and line editing of user keystrokes.

Mosh is a replacement for SSH. It's more robust and responsive, especially over Wi-Fi, cellular, and long-distance links.

    
por 13.04.2015 / 16:39

Tags