为了账号安全,请及时绑定邮箱和手机立即绑定

通过grep通过管道将tcpdump写入文件。(奇怪的数字16)

通过grep通过管道将tcpdump写入文件。(奇怪的数字16)

忽然笑 2021-04-09 17:38:28
我有以下命令(出于隐私原因,我将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,我确实会获得输出。你们中的任何一个都可以理解吗?我是否偶然发现了一个非常奇怪的错误?我已经尝试了几个小时,但仍然没有运气。提前非常感谢您。
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

问题是:我确实尝试使tcpdump行缓冲-l,但没有使grep --line缓冲。这似乎可以解决问题。

那是我的第一个问题,直到下一个。如何使sed行缓冲。我可以使用unbuffer命令来做到这一点。所以现在我是一个快乐的人。感谢@AB的帮助。

编辑:这确实有效。所以不要介意那票。可能是其中不应该拥有计算机的愤怒的孩子之一。


查看完整回答
反对 回复 2021-04-16
  • 1 回答
  • 0 关注
  • 354 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信