Tmuxinatorスクリプトの残りを完了するために、SSHが入るまでtmuxを待機させます


13

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にユーザー入力のプロンプトを表示させる方法がわかるまで、「より良い」方法です。

機能リクエストを発行する場合があります。


2
パスワードなしで接続し、公開/秘密キーを使用してみませんか?
ヨミスモ14

そのように接続できないと言われました。技術的にはできますが、実施されているポリシーでは受け入れられません。また、その変更を行うための音声/権限もありません(すぐに?)。したがって、私の場合、最も抵抗の少ない道路を調べることで、これは有望だと思われます。
タンゴブラボー14

1
リモートボックスにtmuxがインストールされていないと思いますか?それ以外の場合は、リモートボックスにsshしてからtmux 起動することをお勧めします。//また、~/.ssh/configファイルを使用することをお勧めします:put Host fooUser userおよび構成ファイルのHostname example.com3つの連続した行。その後、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'
ダミアン

回答:


3

のいくつかのメモ 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'

「他の機能に接続されていない」とは、channelそれが独自の名前空間にある単なる名前であり、tmuxの事前定義された「イベント」とは無関係であることを意味しますか?
-ormaaj

wait-for -Sメッセージ配信を保証せず、sync-command以前に終了した場合、まだレース問題があるかもしれませんwait-for
-ormaaj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.