在我使用该选项将捕获保存到文件Red Hat Enterprise Linux Server release 6.5
时,生成的文件为空:tcpdump
-w
[root@plop ~]# tcpdump -n -w tcpdump.cap
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C217 packets captured
217 packets received by filter
0 packets dropped by kernel
[root@plop ~]# cat tcpdump.cap
[root@plop ~]# ll tcpdump.cap
-rw-r-----. 1 root root 0 Aug 25 14:13 tcpdump.cap
[root@plop ~]#
>
我还尝试使用and重定向命令的输出&>
,但我总是得到一个空文件......
这可能是什么原因呢?
注意:
- 当不重定向到文件时,我可以在终端中看到正确的输出(许多数据包)
- 我做了同样的事情
thsark
,它按预期工作(输出文件是正确的) - 的版本
tcpdump
是tcpdump version 4.1-PRE-CVS_2012_02_01
- 的版本
libpcap
是libpcap version 1.4.0
- 我尝试了
-U
该选项,但问题并未得到解决。
答案1
尝试添加该-U
选项。
从手册页:
-U
--packet-buffered
If the -w option is not specified, make the printed packet output ``packet-buffered''; i.e., as the description of the contents of each packet is printed, it will be written to the standard
output, rather than, when not writing to a terminal, being written only when the output buffer fills.
If the -w option is specified, make the saved raw packet output ``packet-buffered''; i.e., as each packet is saved, it will be written to the output file, rather than being written only when
the output buffer fills.
The -U flag will not be supported if tcpdump was built with an older version of libpcap that lacks the pcap_dump_flush() function.
答案2
有一个已知问题,tcpdump
如果它无法写入输出文件(例如权限或磁盘已满),它不会报告这一事实。
在这种情况下,由于输出文件正在正常创建,但没有写入数据,因此文件系统可能已满。
strace
可以通过重新运行 via并观察写入失败来确认。
解决方案是清除相关文件系统中的空间或指向tcpdump
存在空间的文件系统。
答案3
我使用了这个cmd: sudo tcpdump -v -w ~/Desktop/tout_135.pcap -i eth0 主机 10.211.55.*
并且生成的文件没有任何数据,只有 chmod 700 或您想要授予权限的任何内容。再次运行 tcpdump,瞧!数据生成了!
答案4
确保tcpdump
正在观看正确的网络接口。或者用于-i any
在任何界面上观看。