web-dev-qa-db-fra.com

Comment écrire dans bash sur ssh sur une machine différente et créer une session tmux puis y exécuter une commande

Fondamentalement, je veux écrire un script comme

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

qui peut faire la chose séparément sur chaque machine en tant que:

ssh machine$idx 

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

python run.py

mais après de nombreux essais et erreurs, je ne peux toujours pas le faire fonctionner comme prévu.

3
K.Wanter

Vous devez diviser les deux actions 1) créer une session détachée tmux; 2) lui envoyer une commande/des clés. Aussi peut-être que l’ajout de -n option est une bonne idée ... Votre script devrait donc ressembler à ceci:

#!/bin/bash
for idx in 1 2 3 4 5 6
do
    ssh -n machine$idx 'tmux new-session -d -s "myTempSession$idx"; tmux send-keys -t "myTempSession$idx" "python run.py" ENTER'
done
2
pa4080