Po niedawnym odkryciu tmux i Tmuxinator starałem się skonfigurować środowisko programistyczne do użycia.
Zgodnie z protokołem nie wolno nam przechowywać haseł / haseł w skryptach. Tak więc szukam oczekiwania na tmux, aby tunel SSH został skonfigurowany (hasło dostarczone, wciśnięty i zalogowany).
Wiem, że w tmux 1.8+ istnieje polecenie „czekaj”. Używam 1.9a przez Cygwin. Ale mimo że przeczytałem dokumentację, po prostu trudno mi ją zrozumieć.
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
Oto bardzo prosta wersja tego, co mam.
Myśli? Wiem, że mogę synchronizować sesje, wciąż pracuję nad tym.
Edycja : wyszukiwanie poleceń i przeciąganie zmiennych z panelu do polecenia z paneli zsynchronizowanych. To może być „lepszy” sposób na obejście, dopóki nie wymyślę, jak zmusić TMUX, aby poprosił mnie o podanie danych przez użytkownika.
Może pojawić się żądanie funkcji.
~/.ssh/config
pliku: putHost foo
,User user
aHostname example.com
na trzech kolejnych linii w pliku konfiguracyjnym. Następniessh foo
staje się równoważne zssh [email protected]
. // Może coś takiego też pomaga:command-prompt -p 'log in as:' -I '[email protected]' 'split-window -v -d %1; split-window -v -d %1'
Odpowiedzi:
Niektóre notatki z
wait-for
Zatem podstawowe użycie funkcji oczekiwania na nie jest zbyt skomplikowane, jeśli uważasz ją za analogiczną do operacji podstawowych współbieżności wątków
To nie jest tak naprawdę związane z innymi funkcjami tmux, tylko wygodna implementacja IPC.
wait-for event_name
to jak czekanie na zdarzenie,wait-for -S event_name
to sposób na zasygnalizowanie zdarzenia-U
I-L
opcje są rodzajem prostopadłe i zachowywać się jak semaforyOdpowiedzi na twoje pytanie bezpośrednio
Możesz rozwiązać ten rodzaj warunków wyścigu,
wait-for
ale tylko wtedy, gdy polecenia są synchroniczne.Problem, który tu masz, polega na tym, że polecenie ssh nie jest synchroniczne: nie wiesz, kiedy się zakończyło.
Przeglądając instrukcję , możemy znaleźć
LocalCommand
dyrektywę, która wydaje się robić to, co chcemy: uruchomić polecenie lokalnie po zakończeniu połączenia, abyśmy mogli wywołaćźródło
channel
jest to tylko nazwa w jej własnej przestrzeni nazw i niezwiązana ze wstępnie zdefiniowanymi „zdarzeniami” tmux?wait-for -S
nie gwarantuje dostarczenia wiadomości isync-command
ukończenia wcześniejwait-for
.