Cách chụp N giây cuối cùng của gói bằng tcpdump


14

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?


1
"Hãy cho tôi" sẽ không đưa bạn đến đây. Có lẽ bạn nên cho chúng tôi thấy những gì bạn đã cố gắng cho đến nay và chính xác những vấn đề bạn không thể tự giải quyết.
matthias krull

Lệnh bash bạn muốn là: "man tcpdump"
William Pursell

Câu trả lời:


15

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.


Thật không may, lệnh hết thời gian không có trong CentOS 5.x. Nó đã được thêm vào trong một bản phát hành mới hơn của coreutils. Một động lực khác để tôi nâng cấp HĐH.
Mister_Tom

Tôi cho rằng nếu bạn không có thời gian chờ, thay vào đó bạn có thể tạo ra thứ gì đó như thời gian chờ bằng một kịch bản:
siesta

Làm việc tuyệt vời cho tôi. Tôi đã sử dụng điều này để theo dõi tất cả lưu lượng truy cập cho một chương trình không hoạt động. Tôi bắt đầu tcpdump với thời gian chờ là N giây. Sau đó, tôi bắt đầu chương trình (mất tới N giây).
Trevor Boyd Smith

Câu hỏi yêu cầu chụp N giây cuối cùng . Câu trả lời của bạn cho biết làm thế nào để chụp N giây đầu tiên .
Flimzy

3

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.


tcpdump 3.9.4 khi được vận chuyển với CentOS 5.10 không có tùy chọn -G. Tôi thực sự cần nâng cấp hệ điều hành của mình.
Mister_Tom

-G không dừng lệnh tcpdump. Nó vẫn chạy mãi. Thời gian chờ 2 tcpdump sẽ dừng lệnh sau 2 giây.
ciceron

@ciceron: Câu hỏi không phải là về việc dừng tcpdump. Đó là về việc bắt N giây cuối cùng . Đề xuất của bạn sẽ chụp N giây đầu tiên . Quyết định không phải những gì OP yêu cầu.
Flimzy

1

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

Trong khi điều này có thể trả lời câu hỏi, nó sẽ là một câu trả lời tốt hơn nếu bạn có thể cung cấp một số lời giải thích tại sao nó làm như vậy.
DavidPostill

Bản thân tcpdump không cho phép theo dõi gói giới hạn thời gian nhưng tshark thì không. (nb kể từ khi câu hỏi này đã được hỏi và trả lời, Ethereal trở thành Wireshark) tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcapsẽ chụp trị giá mười phút của giao thông từ giao diện eth0 vào file $ (hostname) .10mins.pcap
Andrew Beals

0

tcpdump options -w new.tcpdump

ps -ef |grep tcpdump

lưu ý đến PID, nói rằng đó là 11193

at 11:00 kill 11193

bây giờ chỉ cần đợi đến 11:00 đến và việc bắt giữ của bạn sẽ bị giết nhưng được lưu lại


fwiw pgrep là một thay thế tốt hơn nhiều cho ps | grep; đặc biệt ở đây
Người tốt

0

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

0

sudo tcpdump -i -w & điều này sẽ chạy tcpdump là chế độ ngủ

  • w: lưu đầu ra trong tệp .pcap &: quá trình tcpdump sẽ chạy trong chế độ ngủ lưu ý: đảm bảo bạn có đủ dung lượng trống nếu bạn muốn. để chạy nó trong một thời gian. Nó sẽ không làm gián đoạn nếu đăng xuất cho đến khi bạn giết quá trình.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.