2014-09-08 13 views
17

Jedes Mal, wenn ich manuell tcpdump laufen, ich habeCtrl +C verwenden, um es zu stoppen. Jetzt möchte ich meinen tcpdump mit Cronjob einplanen und ich brauche ihn nur für anderthalb Stunden. Ohne manuell zu laufen Ctrl + C oder Kill-Befehl, wie kann es automatisch gestoppt werden? Hier ist der Befehl, den ich testen bin:Wie kann ich festlegen, dass tcpdump für eine bestimmte Zeit ausgeführt wird?

tcpdump -i eth0 'port 8080' -w myfile 

Ich kann einen anderen cronjob planen den tcpdump Prozess zu töten, aber es scheint nicht eine gute Idee.

+0

Entweder der Antworten für tcpdump verwenden könnte; Eine Lösung, die für jedes Programm funktioniert (es sei denn, sie manipulieren mit SIGALRM) ist das Programm sigalarm von http://www.superscript.com/signal/index.html – loreb

Antwort

33

können Sie kombinieren -G {sec} und -W {count} (Limit Anzahl der Dump-Dateien) (Dump-Dateien alle x Sekunden drehen) zu bekommen, was Sie wollen:

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

für 15 Sekunden laufen würde und dann stoppen. Drehen Sie 1,5 Stunden in Sekunden und es sollte funktionieren.

+0

vielen Dank, das funktioniert! – Gary

+0

genial !!! :) Danke –

+15

Hinweis: Dieser Trick funktioniert nicht, wenn Sie keinen Datenverkehr erhalten. – nibot

11

Man könnte es wie folgt tun:

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

das ist auch gut und flexibel! Danke vielmals! – Gary

4

Der Ansatz, die am besten auf Ubuntu für mich gearbeitet 14,04

sudo -i 
crontab -e 

und dann fügen Sie die Zeile

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

Hinweise

  • -G Flagge Anzahl zweiter für Dump zeigt dieses Beispiel auszuführen, fährt täglich von 17.30 bis 21.00 Uhr
  • -W ist die Anzahl der Iterationen tcpdump
  • Cron Job ausführen wird nicht hinzugefügt werden bis Sie die Datei
  • Dieses Beispiel speichern und beenden ist für Pakete eines Asterisk Telefonserver
19

Erfassen Sie Timeout

timeout 5400 tcpdump -i eth0 'port 8080' -w myfile 
Verwandte Themen