내 응용 프로그램이 해당 포트를 사용하기 때문에 특정 포트를 모니터링하고 있습니다. 연결이 무작위로 끊어지는 것 같습니다. 연결이 끊어지기 전에 통과하는 마지막 패킷이 무엇인지 확인하고 싶습니다. 다음 줄을 사용했습니다.
sudo tcpdump -XX -i eth0 port 3050 | tail >> tcpamir.txt
하지만 작동하려면 다른 터미널을 시작하고 문제를 발행해야 합니다.
sudo killall tcpdump
더 나은 접근 방식이 있습니까? EDIT1: 디스크 공간을 빠르게 채울 만큼 충분한 트래픽이 있기 때문에 파일이 팽창하는 것을 원하지 않으므로 마지막 패킷만 캡처하는 것이 중요합니다.
답변1
알았어 내가 찾은 것 같아해결책:
sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050
이렇게 하면 출력 파일이 10초마다 다음이라는 새 파일로 회전됩니다.tcpamir-<unixtimestamp>.txt
보류 중인 파일 크기가 걱정되는 경우 출력 파일을 수정하여 매일 자체적으로 덮어쓸 수도 있습니다. 자세한 내용은 를 읽어보세요 man 3 strftime
.
나는 다음과 같은 것을 생각한다
sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400
%R
24시간 표기법으로 시간을 표시합니다(예: 12:40) .
다음을 사용하여 관련 출력 파일을 읽습니다.
sudo tcpdump -r tcpamir-<unixtimestamp>.txt
두 번째 해결 방법:
더 많은 명령으로 분할하고 스크립트/함수로 저장합니다.
sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt
답변2
캡처된 모든 트래픽만 기록하려면 제거 줄에 -w만 추가하면 됩니다.'| 꼬리 >> tcpamir.txt'
# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap
Wireshark에서 캡처를 분석하려면 확장자는 .cap이어야 합니다. 캡처가 완료되었는지 확인하면 다음을 사용하여 이를 종료할 수 있습니다.Ctrl + C
참고: -w [filename.cap] 캡처를 파일에 기록합니다.