После недавнего открытия tmux и Tmuxinator я пытался настроить среду разработки для использования.
Согласно протоколу, мы не можем хранить пароли / парольные фразы в скриптах. Итак, что я ищу, так это ожидание, пока tmux будет ждать установки SSH-туннеля (введен пароль, нажмите Enter и войдите в систему).
Я знаю, что в tmux 1.8+ есть команда ожидания. Я бегу 1.9a через Cygwin. Но даже несмотря на то, что я перечитал документацию, мне просто трудно понять это.
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 user@example.com' C-m
Итак, вот очень простая версия того, что у меня есть.
Мысли? Я знаю, что могу синхронизировать сеансы, я до сих пор работаю над этим.
Изменить : Просмотр команд и перетаскивание переменных из панели в команду из синхронизированных панелей. Это может быть «лучшим» способом, пока я не пойму, как заставить TMUX запросить у меня ввод пользователя.
Может выпустить запрос функции.
~/.ssh/config
файл: положитьHost foo
,User user
иHostname example.com
на трех последовательных строк в файле конфигурации. Тогдаssh foo
становится эквивалентнымssh user@example.com
. // Может быть, что-то вроде этого тоже поможет:command-prompt -p 'log in as:' -I 'user@example.com' 'split-window -v -d %1; split-window -v -d %1'
Ответы:
Некоторые заметки
wait-for
Таким образом, базовое использование wait-for не слишком сложно, если вы считаете его аналогом потоковых примитивов параллелизма
На самом деле это не связано с другими функциями tmux, просто удобная реализация IPC.
wait-for event_name
это как ожидание события,wait-for -S event_name
средство оповещения о событии-U
И-L
варианты рода ортогональны и действовать , как семафорыРешение вашего вопроса напрямую
Вы можете решить эти виды условий гонки,
wait-for
но только если команды являются синхронными.Проблема, с которой вы столкнулись, заключается в том, что команда ssh не является синхронной: вы не можете сказать, когда она закончилась.
Просматривая руководство, мы можем найти
LocalCommand
директиву, которая, кажется, делает то, что мы хотим: выполнить команду локально после завершения соединения, чтобы мы могли вызватьисточник
channel
это просто имя в своем собственном пространстве имен и не связано с предопределенными «событиями» tmux?wait-for -S
они не гарантируют доставку сообщений иsync-command
финиширование раньшеwait-for
.