我有以下命令(出于隐私原因,我将ip更改为8.8.8.8):
tcpdump -i eth0 -nn udp portrange 27950-27970和dst 8.8.8.8 | grep'length 16 $'>测试文件
很直截了当。我希望将所有长度为16的传入数据包都写入文件,但是由于一个非常奇怪的原因,它不起作用。
tcpdump -i eth0 -nn udp portrange 27950-27970和dst 8.8.8.8 | grep'长度16 $'
此命令可以正常工作,并且完全显示我想要的内容,只是不在文件中。所以我很肯定包在那里。当我使用相同的命令但长度为34时,如下所示:
tcpdump -i eth0 -nn udp portrange 27950-27970和dst 8.8.8.8 | grep'length 34 $'>测试文件
确实会将其写入文件,而不是我想要的数据包。为什么完全相同的命令适用于34,而不适用于16?16有什么特别之处?我完全感到困惑,因为这对我来说似乎是不可能的。
本来我想将命令再次通过管道传递到sed中。但是管道也不能与数字16一起使用。如果将“> testfile”更改为“ | grep 8.8.8.8”,那么我将不会获得任何输出,而对于34,我确实会获得输出。
你们中的任何一个都可以理解吗?我是否偶然发现了一个非常奇怪的错误?我已经尝试了几个小时,但仍然没有运气。
提前非常感谢您。
天涯尽头无女友