最近、tmuxとTmuxinatorを発見し、使用する開発環境を構築しようとしています。
プロトコルによっては、スクリプトにパスワード/パスワードのフレーズを保存できません。だから私が探しているのは、tmuxがSSHトンネルが確立されるのを待つことです(パスワードを入力してEnterキーを押してログインします)。
tmux 1.8+には「wait」コマンドがあることがわかります。私は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 [email protected]' C-m
だからここに私が持っているものの非常に単純なバージョンがあります。
アイデア?セッションを同期できることを知っていますが、まだ問題を解決しています。
編集する:コマンドをナビゲートし、ウィンドウの変数を同期ウィンドウのコマンドにインポートします。 TMUXがユーザー入力を要求する方法を理解するまで、これは「より良い」アプローチです。
機能要求が発行されることがあります。
答え1
いくつかの注意wait-for
したがって、wait-forをスレッドに似ていると考えると、基本的な使い方はそれほど複雑ではありません。並行性の基本要素
実際には他のtmux機能と関連付けられておらず、単にIPCを便利に実装するためのものです。
wait-for event_name
待っているようにイベント
wait-for -S event_name
信号を送る手段です。イベント
-U
optionsとやや-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'