**关闭。**这个问题是not about programming or software development。目前不接受答复。
这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
3天前关闭。
社区在3天前审查了是否重新打开此问题,并将其关闭:
原始关闭原因未解决
Improve this question
我想让tcpdump
将原始数据包数据写入一个文件,并在捕获数据包时将数据包分析显示到标准输出中(我所说的分析是指当-w
丢失时正常显示的行)。有人能告诉我怎么做吗?
5条答案
按热度按时间q1qsirdb1#
这里有一个简单的方法来做你想做的事情:
它的作用:
-w -
告诉tcpdump
将二进制数据写入stdout
-U
告诉tcpdump
在接收到每个数据包时将其写入标准输出,而不是缓冲它们并以块的形式输出tee
将该二进制数据写入文件AND到自己的stdout
-r -
告诉第二个tcpdump
从其stdin
获取数据mbyulnm02#
从tcpdump 4.9.3 4.99.0开始,可以使用
--print
选项:bvjxkvbb3#
tcpdump > output.txt如果您希望将输出保存为文本格式的文件。
如果存在权限问题,请使用sudo。
我的经验,数据得到不断写入。
o2gm4chl4#
mcdcgff05#
如果你想要一种不需要运行两次tcpdump的方法,可以考虑:
在交互式命令提示符下,您可以使用
$TTY
代替$(tty)
,但在脚本中不会设置前者(尽管我不确定在脚本中运行tcpdump有多常见)。旁注:tcpdump默认情况下让你写文件的方式并不太适合Unix。默认情况下,程序应该写入stdout。 shell 构造已经提供了对文件的重定向。也许有一个很好的理由tcpdump是这样设计的,但我不知道是什么。