Wie kann ich mit tcpdump die letzten N Sekunden von Paketen erfassen?
Wie kann ich mit tcpdump die letzten N Sekunden von Paketen erfassen?
Antworten:
Wenn Sie möchten, dass tcpdump nur n Sekunden lang ausgeführt und dann beendet wird, können Sie eine Zeitüberschreitung verwenden.
Beispielsweise:
timeout 2 tcpdump -eni mon0
Ansonsten glaube ich nicht, dass tcpdump eine Option dazu hat.
Ich denke, der beste Weg, dies zu erreichen, ist das Flag -G von tcpdump, das, wenn es mit -w verwendet wird, Ihren Dump alle N Sekunden in einer neuen Datei speichert. Zum Beispiel:
tcpdump -w outfile-% s -G 10
Dadurch wird alle 10 Sekunden eine neue Datei mit dem Namen "outfile-XXXX" (wobei XXXX die Anzahl der Sekunden seit der Epoche darstellt) erstellt.
Weitere Informationen finden Sie in den Manpages zu tcpdump (8) und strftime (3).
Sie können tethereal anstelle von tcpdump verwenden. Sie können diese Befehlszeilenoption verwenden:
-a duration:X
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
erfasst zehn Minuten Datenverkehr von der Schnittstelle eth0 in die Datei $ (Hostname) .10mins.pcap
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
Notieren Sie sich die PID, sagen Sie, es ist 11193
at 11:00
kill 11193
Warten Sie jetzt bis 11:00 Uhr und Ihre Aufnahme wird getötet, aber gespeichert
Ich habe versucht, das gleiche Problem zu lösen, also habe ich ein portables Skript geschrieben, um tcpdump für n Sekunden auszuführen.
#tcpdump_for_n_sec.sh
n=$1
shift #remove first arg from $@
tcpdump $@ & x=$!
sleep $n
kill $x
Verwendung ./tcpdump_for_n_sec.sh sec args for tcpdump
./tcpdump_for_n_sec.sh 5 i- any not port 22 -s0 -wfile.pcap
sudo tcpdump -i -w & dies wird ausgeführt, wenn tcpdump im Ruhemodus ist