Имейте tmux, подождите, пока я не задержу SSH, чтобы завершить остальную часть сценария Tmuxinator

После недавнего обнаружения tmux и Tmuxinator, я пытался настроить среду разработки для использования.

В протоколе нам не разрешается хранить пароли /парольные фразы в скриптах. Так что я жду, пока tmux ждет, пока туннель SSH не будет настроен (пароль предоставляется, вводится нажатым и вошел в систему).

Я знаю, что в tmux 1.8+ есть команда wait-for. Я запускаю 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 [email protected]' C-m

Итак, вот очень простая версия того, что у меня есть.

Мысли? Я знаю, что я могу синхронизировать сеансы, я все еще разрабатываю изломы в этом.

Edit : Изучение команд и вытягивание переменных из панели в команду из синхронных окон. Это может быть «лучшим» способом, пока я не смогу понять, как заставить TMUX запрашивать меня для ввода пользователем.

Может возникнуть запрос функции.

13 голосов | спросил Tim 15 J000000Tuesday14 2014, 19:29:56

1 ответ


1

Некоторые примечания wait-for

Таким образом, базовое использование wait-for не слишком сложно, если вы думаете об этом как аналог потоковой передачи примитивы параллелизма

На самом деле это не связано с другими функциями tmux, просто удобной реализацией IPC.

wait-for event_name похож на ожидание события wait-for -S event_name является средством сигнализации события

Параметры -U и -L являются ортогональными и действуют как семафоры

Прямая ссылка на ваш вопрос

Вы можете решить эти состояния гонки с помощью wait-for, но только если команды синхронны.

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

Проблема, которую вы имеете здесь, заключается в том, что команда ssh не является синхронной: вы не можете сказать, когда она закончилась.

Просматривая руководство , мы можем найти LocalCommand, которая, похоже, делает то, что мы хотим: запустите команду локально после завершения соединения, чтобы мы могли позвонить

ssh [email protected] -o 'PermitLocalCommand yes' -o 'LocalCommand  tmux wait-for -S done'
ответил Att Righ 20 J0000006Europe/Moscow 2017, 17:20:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132