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

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

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

Я знаю, что в 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' Cm 

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

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

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

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

One Solution collect form web for “Имейте tmux, подождите, пока я не задержу SSH, чтобы завершить остальную часть сценария Tmuxinator”

Некоторые заметки о 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' Cm tmux wait-for command-finished 

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

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

 ssh root@iris.tatw.name -o 'PermitLocalCommand yes' -o 'LocalCommand tmux wait-for -S done' 
  • Связывание Tmux с помощью запятой Ctrl +
  • Указание строки командной строки tmux
  • tmux zoom (z) не работает для меня
  • При выходе из последнего терминала в сеансе tmux он может переключиться на другой?
  • Как заставить vim работать с tmux правильно?
  • Tmux не масштабируется, чтобы заполнить окно
  • Вырезать цветной текст, игнорируя цветовые метки
  • Как добавить горизонтальное разделение на окно tmux, которое охватывает всю ширину родительского окна?
  • Почему tmux запускается медленнее и медленнее с течением времени?
  • tmux status-bar поврежден после обращения к двоичному файлу, как сбросить?
  • как закончить последовательность tmux после переключения панелей
  • Interesting Posts

    Присоединение файлов на диске

    Есть ли что-то вроде fswatch, которое будет работать на сетевые диски?

    Пересечение строк в файле с использованием bash и переход к переменной. Результирующая переменная – это не то же значение, что и файл, почему?

    Поиск правильного dmp tmp на нескольких платформах

    Принуждение GNU make для запуска команд в порядке

    Как добавить неподвижное изображение внутри видео с помощью avconv или программного обеспечения с открытым исходным кодом

    почему карта памяти не работает должным образом?

    Как я могу сделать keybind с помощью xdotool в Openbox?

    Виртуальные папки Oracle виртуального окна при выполнении команды oracle

    Проблема использования пространства RedHat Linux

    Как подсчитать дублированные последние столбцы, не удаляя их?

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

    Печать разницы между соседними значениями в столбце с новым столбцом

    Резервное копирование на Synology NAS с bup

    Прокладывайте все через VPN, за исключением SSH на порте 22

    Linux и Unix - лучшая ОС в мире.