"Gib mir" wird dich hier nicht weit bringen. Vielleicht sollten Sie uns zeigen, was Sie bisher versucht haben und wo genau Sie Probleme haben, die Sie nicht selbst lösen können.
Matthias Krull
Der gewünschte Bash-Befehl lautet: "man tcpdump"
William Pursell
Antworten:
15
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.
Leider ist der Befehl timeout in CentOS 5.x nicht vorhanden. Es wurde in einer neueren Version von Coreutils hinzugefügt. Eine weitere Motivation für mich, das Betriebssystem zu aktualisieren.
Mister_Tom
Ich nehme an, wenn Sie keine Zeitüberschreitung haben, können Sie stattdessen eine Zeitüberschreitung mit einem Skript erstellen:
Siesta
Funktioniert gut für mich. Ich habe dies verwendet, um den gesamten Datenverkehr für ein Programm zu überwachen, das nicht funktioniert hat. Ich habe tcpdump mit einem Timeout von N Sekunden gestartet. Dann habe ich das Programm gestartet (was bis zu N Sekunden dauert).
Trevor Boyd Smith
In der Frage werden Sie aufgefordert, die letzten N Sekunden zu erfassen . In Ihrer Antwort erfahren Sie, wie Sie die ersten N Sekunden erfassen .
Flimzy
3
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).
tcpdump 3.9.4 ist im Lieferumfang von CentOS 5.10 nicht mit der Option -G ausgestattet. Ich muss mein Betriebssystem wirklich aktualisieren.
Mister_Tom
-G stoppt den Befehl tcpdump nicht. Es läuft immer noch. Das Timeout 2 tcpdump stoppt den Befehl nach 2 Sekunden.
Ciceron
@ciceron: Es ging nicht darum, tcpdump zu stoppen. Es ging darum, die letzten N Sekunden zu erfassen . Ihr Vorschlag erfasst die ersten N Sekunden. Entscheidend nicht, wonach das OP gefragt hat.
Flimzy
1
Sie können tethereal anstelle von tcpdump verwenden. Sie können diese Befehlszeilenoption verwenden:
Während dies die Frage beantworten mag, wäre es eine bessere Antwort, wenn Sie eine Erklärung dafür liefern könnten .
DavidPostill
tcpdump selbst erlaubt keine zeitlich begrenzte Paketverfolgung, tshark jedoch. (nb da diese Frage gestellt und beantwortet wurde, wurde Ethereal zu Wireshark) tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcaperfasst zehn Minuten Datenverkehr von der Schnittstelle eth0 in die Datei $ (Hostname) .10mins.pcap
Andrew Beals
0
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
sudo tcpdump -i -w & dies wird ausgeführt, wenn tcpdump im Ruhemodus ist
w: Ausgabe in der .pcap-Datei speichern &: Der tcpdump-Prozess wird im Energiesparmodus ausgeführt. um es für eine Weile laufen zu lassen. Es wird nicht unterbrochen, wenn Sie sich abmelden, bis Sie den Prozess beenden.
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:
Ansonsten glaube ich nicht, dass tcpdump eine Option dazu hat.
quelle
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).
quelle
Sie können tethereal anstelle von tcpdump verwenden. Sie können diese Befehlszeilenoption verwenden:
quelle
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
erfasst zehn Minuten Datenverkehr von der Schnittstelle eth0 in die Datei $ (Hostname) .10mins.pcaptcpdump 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
quelle
Ich habe versucht, das gleiche Problem zu lösen, also habe ich ein portables Skript geschrieben, um tcpdump für n Sekunden auszuführen.
Verwendung ./tcpdump_for_n_sec.sh sec args for tcpdump
quelle
sudo tcpdump -i -w & dies wird ausgeführt, wenn tcpdump im Ruhemodus ist
quelle