stderrでnetcat出力を許可しないgrepの元のQ&Aを参照してください。前のStackExchangeの投稿。
簡潔な答え。いいですね。最後にTシャツを追加しても出力が生成されないのはなぜですか?
nc -zvv localhost 3100-3200 2>&1 | grep succeeded | tee test.txt
Tシャツにのみ使用できます。ただgrepを使用してください。 grepの後にteeを接続すると、出力(コンソールまたはファイル)は提供されません。
どんなアイデアがありますか?
答え1
De Vera N, クサラナンダ,
ありがとうございます。それは私のジョバシムとgrepとncの行動の組み合わせです。私のRaspberry Piで次のコマンドを使用して
nc -nvw1 127.0.0.1 1-65535 2>&1 | grep succeeded | tee test.txt
すべてのポートがスキャンされると、コンソールは6つの開いているポートを印刷します。 --line-bufferedオプションを使用すると、コマンドは期待どおりに機能します(見つかったとおりに印刷)。
さらに、grepのバッファリング動作はティーにパイプを接続するときにのみ発生するようです。 teeを使用せずに--line-bufferedを使用しない場合でも、grepは検出されたオープンポートを印刷し続けます。
-w1 オプションがない場合、最初のオープンポートは grep によってコンソールに出力されますが、出力は中断されます。実際、この場合中断されるのはncの出力です。