Linux
讓 tmux 等到我 SSH 進入,以完成其餘的 Tmuxinator 腳本
最近發現了 tmux 和 Tmuxinator 之後,一直在嘗試搭建一個開發環境來使用。
根據協議,我們不允許在腳本中儲存密碼/密碼片語。所以我正在尋找的是等待 tmux 等待 SSH 隧道建立(提供密碼,按下輸入,然後登錄)。
我知道 tmux 1.8+ 中有一個“等待”命令。我正在通過 Cygwin 執行 1.9a。但即使我已經閱讀了文件,我也很難理解它。
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 提示我進行使用者輸入之前,這可能是一種“更好”的方式。
可能會發出功能請求。
的一些筆記
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 root@iris.tatw.name -o 'PermitLocalCommand yes' -o 'LocalCommand tmux wait-for -S done'