Executando um script do ssh, efetuando logout e continuando o script

0

A questão geral aqui é: como automatizar o sshing em uma máquina, executar um script e sair sem matar o script? Eu sei que isso foi respondido várias vezes, mas não estou tendo sorte com as soluções que encontrei.

Os detalhes:

Eu tenho código em execução em várias máquinas nas quais eu ssh.

Agora, estou fazendo o seguinte em um terminal:

ssh machine1@host (log in automatically with key)
screen -S screen_name
./script.sh
<keystroke C-a-d>
exit

Demorado, e mais importante, propenso a erros (abra uma tela e saia sem executar o script, etc.).

Eu gostaria de automatizar isso. Meu primeiro pensamento foi tentar replicar isso exatamente. Eu tentei xdotool para enviar as teclas, mas o meu ambiente é apenas a linha de comando, e parece que a ferramenta errada para o trabalho. Da mesma forma espera que parece que poderia ser usado em vez de xdotool, mas, novamente, provavelmente o caminho errado para fazê-lo.

Eu também tentei usar o nohup em vez da tela, fazendo    nohup ./script.sh &    

mas quando eu saio da sessão ssh e volto, parece que o script parou de funcionar quando fiz logout. Tanto quanto eu posso dizer, nohup é o caminho certo para fazê-lo.

    
por raoulcousins 11.04.2014 / 22:31

1 resposta

1

tl; dr:

$ ssh host 'nohup your-command &' &

Veja um exemplo:

$ ssh localhost 'nohup sleep 10 &' &
[1] 12345
$ sleep 5 && ps x | grep '[s]leep 10'
24044 pts/0    S      0:00 ssh localhost nohup sleep 10 &
24054 ?        S      0:00 sleep 10

Isso inicia uma conexão SSH, executa sleep 10 em segundo plano no host de destino (que é seu host local) e verifica a lista de processos ( ps ) para verificar se ainda está em execução após ssh termina.

    
por 11.04.2014 / 22:46