Como escrever no bash para o ssh em uma máquina diferente e criar a sessão do tmux e então executar algum comando nele

0

Basicamente eu quero escrever algum script como

#!/bin/bash
for idx in 1 2 3 4 5 6
do
        echo machine$idx
        ssh machine$idx tmux new-session -d -s "myTempSession$idx" python run.py
done

que pode fazer a coisa separadamente como:

ssh machine$idx 

tmux new-session -d -s "myTempSession$idx"

python run.py

mas depois de muitas tentativas e erros, ainda não consigo fazê-lo funcionar como esperado.

UPDATE seguindo os conselhos de Tagwint, meu script é:

#!/bin/bash
for idx in 1 2 3 4 5 6
do
        ssh machine$idx <<REMSH
        tmux new-session -d -s "myTempSession"
        tmux send-keys -t -s "myTempSession" python Space run.py  C-m
        REMSH
done

mas solicita:

./dist_run.sh: line 8: warning: here-document at line 4 delimited by end-of-file (wanted 'REMSH')
./dist_run.sh: line 9: syntax error: unexpected end of file

UPDATE eu modifico para ser

#!/bin/bash
for idx in 36 37
do
        ssh machine$idx <<REMSH
        tmux new-session -d -s "myTempSession"
        tmux send-keys -t -s "myTempSession" python Space run.py C-m
REMSH
done

isso funciona, mas depois de executar o script, eu logar em machine36 e machine37 , vá para o myTempSession aberto, o python run.py não é executado

    
por K.Wanter 28.06.2018 / 11:52

1 resposta

0

Eu sugiro que você apareque HERE-DOC

ssh machine$idx <<REMSH
tmux new-session -d -s "myTempSession$idx"
tmux send-keys -t "myTempSession$idx" python Space run.py  C-m 
REMSH

Observe que a parte $ idx no nome da sessão provavelmente irá resolver em nada a menos que você tenha uma variável de ambiente idx definida então você vai ter o nome da sessão apenas myTempSession

    
por 28.06.2018 / 13:20