Làm cách nào tôi có thể chụp N giây cuối cùng của gói bằng tcpdump?
Làm cách nào tôi có thể chụp N giây cuối cùng của gói bằng tcpdump?
Câu trả lời:
Nếu bạn chỉ muốn tcpdump chạy trong n giây và sau đó thoát, bạn có thể sử dụng thời gian chờ.
Ví dụ:
timeout 2 tcpdump -eni mon0
Mặt khác, tôi không tin rằng tcpdump có một tùy chọn để làm điều này.
Tôi nghĩ cách tốt nhất để thực hiện điều này là với cờ -G của tcpdump, khi được sử dụng với -w, sẽ lưu kết xuất của bạn vào một tệp mới mỗi N giây. Ví dụ:
tcpdump -w outfile-% s -G 10
Điều này sẽ tạo một tệp mới với tên 'outfile-XXXX' (trong đó XXXX đại diện cho số giây kể từ epoch) cứ sau 10 giây.
Xem các trang hướng dẫn cho tcpdump (8) và strftime (3) để biết thêm chi tiết.
Bạn có thể sử dụng tethereal thay vì tcpdump. Bạn có thể sử dụng tùy chọn dòng lệnh này:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
sẽ chụp trị giá mười phút của giao thông từ giao diện eth0 vào file $ (hostname) .10mins.pcap
Tôi đã cố gắng giải quyết vấn đề tương tự vì vậy, tôi đã viết một kịch bản di động để chạy tcpdump trong n giây.
#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@
tcpdump $@ & x=$!
sleep $n
kill $x
Cách sử dụng ./tcpdump_for Stewsec.sh sec lập luận cho tcpdump
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
sudo tcpdump -i -w & điều này sẽ chạy tcpdump là chế độ ngủ