Como executar um script em uma máquina remota usando o comando screen e ssh?

2

Gostaria de executar em uma lista de servidores e executar remotamente um script usando screen .

manualmente, eu faria:

screen -RD
./run_script

e manualmente remotamente eu faria:

ssh root@server "screen -RD && ./run_script"

mas o que acontece na realidade é que screen -RD está em execução e quando eu digito exit apenas, ele começa a executar o script.

Então, como é possível executar screen -RD remotamente e, em seguida, emitir um comando dentro do primeiro terminal de tela?

Editar # 1:

[root@edge14 ~]# screen -r -X /nfs/ops/component/edge/scripts/move_stuck_aggfiles_to_hadoop.sh && screen -RD
No screen session found.
[root@edge14 ~]# 
    
por Itai Ganot 02.07.2015 / 15:21

1 resposta

5

Você usa a opção -X . Na página do manual:

  -X   Send  the specified command to a running screen session. You can
        use the -d or -r option to tell screen to look only for attached
        or detached screen sessions. Note that this command doesn't work
        if the session is password protected.

Para combinar isso com a visualização da tela:

ssh root@server "screen -dr -X ./run_script && screen -RD"

(Mas você realmente não deve permitir logins ssh como root, é uma prática muito ruim do ponto de vista de segurança.)

    
por 02.07.2015 / 15:30