Ter o tmux esperando até o SSH entrar, para completar o restante do script do Tmuxinator

13

Depois de descobrir recentemente o tmux e o Tmuxinator, tenho tentado configurar um ambiente de desenvolvimento para usar.

Por protocolo, não podemos armazenar senhas / senhas em scripts. Então, o que estou procurando é uma espera para o tmux esperar que o túnel SSH seja configurado (senha fornecida, digite pressionado e logado).

Eu sei que há um comando "wait-for" no tmux 1.8+. Eu estou correndo 1.9a via Cygwin. Mas apesar de eu ter lido a documentação, estou tendo dificuldade em entendê-la.

tmux new-session -s development -n editor -d
tmux split-window -v
tmux split-window -v

"Need to send to all panes.
tmux send-keys -t development 'ssh [email protected]' C-m

Então, aqui está uma versão muito simples do que eu tenho.

Pensamentos? Eu sei que posso sincronizar as sessões, eu ainda estou trabalhando as torções nisso.

Editar : Examinar os comandos e extrair variáveis do painel para o comando dos painéis sincronizados. Isso pode ser uma maneira "melhor" de ir até que eu possa descobrir como obter o TMUX para solicitar a entrada do usuário.

Pode emitir uma solicitação de recurso.

    
por Tim 15.07.2014 / 17:29

1 resposta

1

Algumas notas de wait-for

Portanto, o uso básico de espera não é muito complicado se você pensar nele como algo análogo ao threading primitivas de concorrência

Não está realmente ligado a outras funcionalidades do tmux, apenas uma implementação conveniente do IPC.

wait-for event_name é como esperar por um evento wait-for -S event_name é um meio de sinalizar um evento

As opções -U e -L são ortogonais e agem como semáforos

Respondendo à sua pergunta diretamente

Você pode resolver esse tipo de condição de corrida com wait-for , mas somente se os comandos forem síncronos.

tmux send-keys 'sync-command ; tmux wait-for -S command-finished' C-m
tmux wait-for command-finished

O problema que você tem aqui é que o comando ssh não é síncrono: você não pode dizer quando terminou.

Analisando o manual , podemos encontrar a diretiva LocalCommand que parece fazer o que queremos: executar um comando localmente após o término da conexão, para que possamos ligar

ssh [email protected] -o 'PermitLocalCommand yes' -o 'LocalCommand  tmux wait-for -S done'
    
por 20.06.2017 / 16:20

Tags