it-swarm.com.de

Wie plane ich tcpdump so, dass es für einen bestimmten Zeitraum ausgeführt wird?

Jedes Mal, wenn ich tcpdump manuell ausführe, muss ich verwenden Ctrl+C um es zu stoppen. Jetzt möchte ich mein tcpdump mit cronjob einplanen und brauche es nur noch, um anderthalb Stunden zu laufen. Ohne manuell zu laufen Ctrl+C oder kill Befehl, wie kann es automatisch gestoppt werden? Hier ist der Befehl, den ich teste:

tcpdump -i eth0 'port 8080' -w  myfile

Ich kann einen weiteren Cronjob planen, um den tcpdump -Prozess abzubrechen, aber es scheint keine gute Idee zu sein.

31
Gary

Sie können -G {sec} (Speicherauszugsdateien alle x Sekunden drehen) und -W {count} (Maximale Anzahl von Speicherauszugsdateien) kombinieren, um das zu erhalten, was Sie möchten:

tcpdump -G 15 -W 1 -w myfile -i eth0 'port 8080'

würde für 15 Sekunden laufen und dann aufhören. Verwandle 1,5 Stunden in Sekunden und es sollte funktionieren.

46
Paul Rubel

sie könnten Timeout verwenden

timeout 5400 tcpdump -i eth0 'port 8080' -w myfile
35
Matt

Du könntest es so machen:

tcpdump -i eth0 'port 8080' -w  myfile & 
pid=$!
sleep 1.5h
kill $pid
16
kiwisan

Der Ansatz, der bei Ubuntu 14.04 am besten funktioniert hat

Sudo -i
crontab -e

und dann die Zeile hinzufügen

30 17 * * * /usr/sbin/tcpdump -G 12600 -W 1 -s 3000 -w /home/ubuntu/capture-file.pcap port 5060 or portrange 10000-35000

Anmerkungen

  • Das Flag -G gibt die Anzahl der Sekunden an, die der Dump ausgeführt werden soll. Dieses Beispiel wird täglich von 17.30 Uhr PM bis 21.00 Uhr ausgeführt
  • -W ist die Anzahl der Iterationen, die tcpdump ausführt
  • Der Cron-Job wird erst hinzugefügt, wenn Sie die Datei speichern und beenden
  • In diesem Beispiel werden Pakete eines Asterisk-Telefonservers erfasst
4
Ryan Charmley