grep 在 nc 輸出中不符 - tee 沒有給出輸出

grep 在 nc 輸出中不符 - tee 沒有給出輸出

請參閱有關 grep 不接受 stderr 上的 netcat 輸出的原始問答,網址為之前的 StackExchange 帖子

簡潔的答案。我喜歡。為什麼在末端添加 T 卹無法產生任何輸出?

nc -zvv localhost 3100-3200 2>&1 | grep succeeded | tee test.txt

僅使用 T 卹作品。僅使用 grep 即可。 grep 之後連結 tee 不會給予任何輸出(控制台或檔案)。

有任何想法嗎?

答案1

德維拉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 時才會發生。當未使用 tee 且未使用 --line-buffered 時,grep 仍會列印出找到的開放連接埠。

如果沒有 -w1 選項,第一個開啟的連接埠將由 grep 列印在控制台上,但隨後輸出會掛起 - 實際上,在這種情況下掛起的是 nc 的輸出。

相關內容