将 grep 过滤器的输出附加到文件
Append output of grep filter to a file
我正在尝试将 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 命令的完整输出重定向(附加)到文件中?
tcpdump
的输出可能通过 stderr,而不是 stdout。这意味着 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
我正在尝试将 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 命令的完整输出重定向(附加)到文件中?
tcpdump
的输出可能通过 stderr,而不是 stdout。这意味着 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