ssh -T MACHINEB SCRIPT &
mantém a conexão SSH em execução enquanto o SCRIPT estiver em execução. Precisa, porque:
- Se o SCRIPT produzir qualquer saída, o SSH deve retransmiti-lo ao host.
- Se o SCRIPT ler entrada, o SSH deve retransmiti-lo do host. Isso pode seja um pouco sutil .
- Quando o SCRIPT sai, o SSH transmite seu status de saída para o cliente e o processo
ssh
sai com esse status.
Se a conexão cair, isso não afetará o SCRIPT se ele não tentar ler ou gravar em stdin, stdout ou stderr. Como não há terminal envolvido, o SCRIPT não será morto por um SIGHUP quando a conexão for interrompida. No entanto, se o SCRIPT tentar, digamos, imprimir uma mensagem de erro, essa mensagem passará pela conexão.
Você deve fazer uma de duas coisas.
-
Método de trabalho em lote: certifique-se de que o SCRIPT não receba nenhuma entrada e esteja registrando a saída padrão e o erro padrão em um arquivo.
ssh -T MACHINEB 'myprogram </dev/null >myprogram.log 2>&1'
-
Método interativo: execute o SCRIPT dentro de um multiplexador de tela: Tela ou tmux .
ssh -T MACHINEB screen -S somename -dm myprogram
Você pode ver o que seu programa está fazendo anexando a essa sessão de tela.
ssh MACHINEB screen -S somename -dr
A sessão de tela sai quando o programa é encerrado. Para mantê-lo por perto para ver a saída e os erros do programa, consulte Evitar que a tela do GNU encerre a sessão assim que o script executado terminar
Veja também Execute comandos remotos, desconectando-os completamente a conexão ssh