grepはnc出力に一致しません。 teeは出力を提供しません。

grepはnc出力に一致しません。 teeは出力を提供しません。

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の出力です。

関連情報