web-dev-qa-db-fra.com

Comment planifier l'exécution de tcpdump pour une période spécifique?

Chaque fois que j'exécute manuellement tcpdump, je dois utiliser Ctrl+C pour l'arrêter. Maintenant, je veux planifier mon tcpdump avec cronjob et je n'en ai besoin que pour 1 heure et demie. Sans exécution manuelle Ctrl+C ou kill, comment peut-il être arrêté automatiquement? Voici la commande que je teste:

tcpdump -i eth0 'port 8080' -w  myfile

Je peux planifier un autre cronjob pour tuer le processus tcpdump, mais cela ne semble pas être une bonne idée.

31
Gary

Vous pouvez combiner -G {sec} (rotation des fichiers de vidage toutes les x secondes) et -W {count} (nombre limité de fichiers de vidage) pour obtenir ce que vous voulez:

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

fonctionnerait pendant 15 secondes puis s'arrêterait. Transformez 1,5 heures en secondes et cela devrait fonctionner.

46
Paul Rubel

vous pouvez utiliser le délai d'expiration

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

Vous pouvez le faire comme ceci:

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

L'approche qui a fonctionné le mieux pour moi sur Ubuntu 14.04

Sudo -i
crontab -e

puis ajoutez la ligne

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

Remarques

  • L'indicateur -G indique le nombre de secondes pendant lesquelles le vidage doit s'exécuter, cet exemple s'exécute tous les jours de 5h30 PM à 21h00
  • -W est le nombre d'itérations que tcpdump exécutera
  • La tâche Cron ne sera pas ajoutée tant que vous n'aurez pas enregistré et quitté le fichier
  • Cet exemple concerne la capture de paquets d'un serveur téléphonique Asterisk
4
Ryan Charmley