2011-06-27 11 views
5

私はnetcatポートをポート1501でリッスンしています。そのポートの受信した入力を新しいターミナルウィンドウにパイプしたいと思っています。基本的にそのポートの誰もがマシンを制御できるので、これは悪い考えですが、可能かどうかを判断したいのです。誰でも知っている。私はこれまでこれを試みました。Bashターミナルは別のターミナルにリダイレクトします

nc -l 1500 | xterm または nc -l 1500 | xterm -e "NAMEOFWINDOW"

また、単純な方法でgnome-terminalにリダイレクトしようとしました。私はできるです

nc -l 1500 | grep "SOMEKEYWORD"が正常に終了しました。

アイデア? -TJ

答えて

1

これはxtermSTDINの入力を受け付けないように、それは直接キーボード入力をキャッチし、この方法では不可能です。代わりにxtermの

  • 使用bash

    は二つの選択肢がありますnc -l 1500 | bash xtermの

  • 使用xtermの-Sオプションでは、しかし、あなたは、前に擬似ttyに、その後をnetcatをを添付する必要がありますxtermを擬似端末に接続する
2

2つの問題があります。最初は、xtermgnome-terminalはプロンプトと受け入れコマンドを提供するプログラムではなく、キーボードと画面をシェル(通常/bin/bash)であるそのプログラムに接続する方法です。実際にはnetcatに接続したいのはbashです。

第2に、|を使用すると、単方向パイプ以外のものが必要です。あなたが使用している場合:

nc -l -p 1500 | /bin/bash 

その後、あなただけbashにからユーザーをパイプを持っています - 彼らは、入力を与えることができるでしょうが、任意の出力は表示されません。また、あなたが行う場合:

/bin/bash | nc -l -p 1500 

は、反対が適用されます - あなただけの
bashからユーザー にパイプを持っています。ユーザーにはbashの出力が表示されますが、入力はできません。

幸いにも、netcatをを別のコマンドに双方向パイプ(実際には、2つのパイプ)を作成するためのオプションをサポートしています。

nc -l -p 1500 -e /bin/bash 

これは、あなたがやりたいだろう - しかしbashは、プロンプトが表示されないことに注意し、以来、それは "非インタラクティブ"モードで実行されます。

ああ、もう1つ - はい、これはです。本当にの悪い考えです。

+0

私はそれができることの関心のために多くのその馬鹿なアイデアを知っています。大変お返事ありがとうございます。素晴らしい説明全体的に:)良い仕事。 –

+0

実際にこれを今試みました。 -eは認識されたスイッチではありません私はnetcatの私のバージョンやubuntuを使用して私は何かが不足している? –

+0

@TJ Pavlu:ああ、デフォルトでは、Ubuntuはgimped netcatをインストールします。 'nc.traditional'を提供する' netcat-traditional'パッケージが必要です。 – caf

0

teeを使用して出力を一時ファイルにリダイレクトし、次に別の端末のtail --follow=name --retryをリダイレクトすることができます。

nc -l 1500 | tee /tmp/file.txt 

そしてもちろん

tail --follow=name --retry /tmp/file.txt 

あなたはtailコマンドが中断されることなく、cronジョブ経由rm -f /tmp/file.txtを行うことができますこの方法。

+0

私はあなたがその質問を誤解したと思います。 –

関連する問題