Preciso executar comandos SSH remotamente com a saída exibida localmente. Mas se a conexão quebrar, quero que o comando ainda seja executado.
Não estou falando muito sobre fazer login e executar, mas fazer ssh user @ remotehost 'command && command etc'
Como posso garantir que o comando seja executado mesmo se a conexão for interrompida?
fonte
Você deseja ter uma sessão persistente que possa retomar ou apenas para impedir que uma desconexão interrompa a exceção?
Para o primeiro, use
screen
, para o últimonohup
,.fonte
Como mencionado anteriormente,
screen
pode fazer todo o truque. Mas não é só o que você precisa. Eu uso a tela há anos e agora sempre que faço login nos sistemas. Tente instalarscreen
e criar~/.screenrc
com essa configuração:Então corra
screen -Rd vcf
. Essa é a invocação preferencial da tela. Você se reconectará à sessão criada anteriormente com o nome vcf * (ou será avisado se for ambíguo) ou, se a sessão ainda não estiver aberta, ela será criada. CTRL+ Aé uma meta-chave que faz tudo.CTRL+A C
( CTRL+ A, então C) cria uma nova janela (tela) dentro da sessão.CTRL+A SPACE
mova o foco para a próxima janela em uma rodada.CTRL+A D
desanexe a sessão atual, mantendo todas as janelas funcionais entre as conexões. Se você iniciou uma tarefa muito longa, pode desconectar da tela e reconectá-la mais tarde para ver o que acontece. O mesmo acontece se a sua sessão ssh for perdida - a tela permanece ativa com todas as janelas abertas e todas as tarefas iniciadas.Se você quiser fechar alguma janela dentro da tela - apenas a
exit
partir da casca. Se você deseja fechar todas as conchas / tarefas em todas as janelas e sair da tela - basta pressionarCTRL+A CTRL+\
e pressionar "Y" quando solicitado.Para todo o resto, veja a tela do homem.
fonte
Eu já vi essa alternativa para uma conexão ssh "like" confiável:
http://mosh.mit.edu/
fonte
Eu normalmente faria:
fonte