2012-09-30 51 views
6

私はtmuxを使用してサーバーコンソールを実行しています。コンソールが応答しているかどうかを確認するために、私は、コンソール上でコマンドを実行するsend-keysを使用したい:tmuxでsend-keyの結果を取得する方法は?

tmux send-keys -t mysess:mywin "show info" Enter 

(実は、私は現在のファイルへの完全なコンソール出力をログに記録し、最後の行を読んでいます、しかし、私はよりよい解決策が存在することを願っています。)

tmux pipe-pane -o -t mysess:mywin 'cat >> mysess-mywin.log' 
+0

が、使用しているOS用のタグを追加するようにしてください - これはあなたの質問と答えを見つけるために他人を助けますそれ。 [tmux]タグにはフォロワーが75人しかいません。 – Artemix

+0

'show info'の出力は表示されません。' send-keys'コマンドを実行したウィンドウではなく、 'mysess:mywin'に表示されるからです。 – chepner

答えて

0

一つの選択肢は、「ショーの情報を」を実行センドキーを使用してスクリプトを呼び出して、スクリプトtmuxのセッションに戻って結果「-キーを送信」を持つことです君は調子がいいね。これはtmuxで始まる場合にのみ有効です。

4

あなたは出力にアクセスしているかのコンテキストは、このソリューションが優れているかどうかに影響しますが、これはうまくいくかもしれない:

tmux send-keys -t <session:win.pane> '<command>' Enter 
tmux capture-pane -t <session:win.pane> 
tmux show-buffer 

あなたは-Sで再生することができ、かつcapture-pane-Eオプション必要があります、出力の正確な把握のためにペインの大きさなどが含まれます。あなたが傾けている場合は、show-panesと小さい正規表現を使用してペインの高さをキャプチャし、最後の行だけをキャプチャするのに-S <height - 1>を使用することもできます。

それはとても(例えば、Pythonで)のような他のプログラムからこれを読むためにそして簡単です:

print Popen(['tmux', 'show-buffer'], stdout=PIPE).communicate()[0] 
関連する問題