Tmux sobre SSH no script

1

Estou tentando escrever um script que gera vários comandos de longa duração em uma máquina remota e local. Atualmente, um exemplo da minha solução seria:

#!/bin/bash

ssh -t [email protected] tmux new -s remote -d "find / *"

tmux new -s local -d "find / *"

No entanto, quando esses comandos se tornam mais complexos (comandos longos e encadeados com aspas, em vez de apenas um único comando find ), torna-se confuso colocá-los em uma única linha e escapar de todas as aspas aninhadas .

Eu tentei usar o SSH com o chamado "documento aqui", por exemplo:

ssh -t [email protected] << EOF
    tmux new -s remote -d "find / *"
EOF

tmux new -s local -d "find / *"

Mas isso leva ao erro not a terminal com a opção -T ou -t para o SSH, ou a algum comportamento muito estranho ao usar a opção -tt.

Alguma sugestão para otimizar / alterar drasticamente minha abordagem?

    
por Girmi 07.02.2017 / 13:49

1 resposta

0

Acho que você deve conseguir combinar esta ideia com esta outra ideia e obter algo assim para trabalhar:

CMDS=$(cat <<CMD
read -e -p "Enter the path to the find: " FILEPATH
echo \$FILEPATH
#find \$FILEPATH -name $FILENAME
#read -p done: 
CMD
) 

tmux new -s finder -n remote "ssh localhost -t '$CMDS'" \; \
        new-window -n local  "bash -c '$CMDS'" \; \
            attach \;

Bônus - ambos os comandos estão sendo executados em paralelo e na mesma sessão tmux .

Alguns problemas de cotação e escape podem permanecer dependendo da complexidade dos comandos que você deseja executar. Observe também o read -p done ou seus comandos serão executados, terminados e o tmux também terminará sem você ver a saída. Talvez seja isso que você pretendia, e o uso de find foi meramente, por exemplo.

    
por 08.02.2017 / 20:54