이 옵션을 사용하여 캡처를 파일에 저장하면 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
이는 를 통해 다시 실행하고 쓰기 실패를 관찰하여 확인할 수 있습니다.
해결책은 문제의 파일 시스템에서 공간을 지우거나 tcpdump
공간이 존재하는 파일 시스템을 가리키는 것입니다.
답변3
나는 이 cmd를 사용했습니다: sudo tcpdump -v -w ~/Desktop/tout_135.pcap -i eth0 host 10.211.55.*
결과 파일에는 데이터가 없으며 chmod 700 또는 권한을 부여하려는 모든 항목만 포함됩니다. tcpdump를 다시 실행하면 짜잔! 데이터가 생성됩니다!
답변4
tcpdump
올바른 네트워크 인터페이스를 보고 있는지 확인하십시오 . 또는 -i any
모든 인터페이스에서 볼 수 있습니다.