Как написать в bash по ssh на другую машину и создать сеанс tmux, а затем запустить в нем какую-то команду

По сути, я хочу написать какой-нибудь скрипт, например

#!/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

, который может делать это отдельно, как:

ssh machine$idx 

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

python run.py

, но после многих проб и ошибок я все еще не могу заставить его работать так, как ожидалось.

UPDATE следуя совету Tagwint, мой сценарий:

#!/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

, но он предлагает:

./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 Я изменяю его на

#!/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

, это работает, но после запуска сценария я вхожу в machine36 и machine37, перейдите в открытый myTempSession, python run.py не выполняется

0
28.06.2018, 14:58
1 ответ

Советую ЗДЕСЬ -DOC apporach

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

Примечание. Часть $idx в имени сеанса, скорее всего, ничего не разрешит. если у вас не определена переменная среды idx поэтому вы получите имя сеанса просто myTempSession

0
28.01.2020, 04:19

Теги

Похожие вопросы