특정 포트를 모니터링하고 있는데 내 애플리케이션이 해당 포트를 사용하기 때문에 연결이 무작위로 끊어지는 것 같고 연결이 끊어지기 전에 마지막으로 통과한 패킷이 무엇인지 확인하고 싶습니다. 다음 줄을 사용했습니다.
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]은 캡처를 파일에 기록합니다.