将grep过滤器的输出附加到文件

时间:2015-12-28 15:44:56

标签: shell grep tcpdump

我正在尝试将grep过滤器的输出保存到文件中。

我想长时间运行tcpdump,并将某个IP过滤为文件。

tcpdump -i eth0 -n -s 0 port 5060 -vvv | grep "A.B.C."

这很好用。它向我展示了我网络中的IP。

但是当我在末尾添加>> file.dump时,文件始终为空。

我的剧本:

tcpdump -i eth0 -n -s 0 port 5060 -vvv | grep "A.B.C." >> file.dump

是的,必须grep。我不想使用tcpdump过滤器,因为它为我提供了数百万行和grep,每个IP只有一行。

如何将grep命令的完整输出重定向(追加)到文件?

1 个答案:

答案 0 :(得分:4)

tcpdump的输出可能是通过stderr,而不是标准输出。这意味着除非您将其转换为grep,否则stdout将无法捕获它。

为此,您可以使用|&

tcpdump -i eth0 -n -s 0 port 5060 -vvv |& grep "A.B.C."

然后,可能会发生输出是连续流,因此您不得不告诉grep使用行缓冲。为此,您可以选择--line-buffered选项。

所有人一起说:

tcpdump ... |& grep --line-buffered "A.B.C" >> file.dump