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

Chaque fois que je lance manuellement tcpdump , je dois utiliser Ctrl + C pour l’arrêter. Maintenant, je veux planifier mon tcpdump avec cronjob et j’en ai seulement besoin pour une heure et demie. Sans exécuter manuellement 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 travail cron pour tuer le processus tcpdump , mais cela ne semble pas être une bonne idée.

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

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

courrait pendant 15 secondes et s’arrêterait ensuite. Tourner 1,5 heure en secondes et cela devrait fonctionner.

vous pourriez utiliser le timeout

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

Vous pourriez le faire comme ceci:

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

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

  • -G indicateur indique le nombre de secondes pendant lesquelles le vidage doit être exécuté, cet exemple s’exécute tous les jours de 17h30 à 21h00.
  • -W est le nombre d’itérations que tcpdump exécutera
  • Le travail cron ne sera ajouté que lorsque vous enregistrez et quittez le fichier
  • Cet exemple concerne la capture de paquets d’un serveur téléphonique Asterisk.