Comment programmer tcpdump pour une période spécifique?
à chaque fois, quand j'exécute manuellement tcpdump
je dois utiliser Ctrl+ C pour l'arrêter. Maintenant, je veux programmer ma tcpdump
avec une tâche cron et je n'ai plus besoin de courir pendant 1 heure et demie. Sans exécuter manuellement Ctrl+ C ou commande kill, comment peut-il être arrêté automatiquement? Voici la commande que j'suis en train de tester:
tcpdump -i eth0 'port 8080' -w myfile
je peux programmer un autre cronjob pour tuer le tcpdump
mais ce n'est pas une bonne idée.
4 réponses
Vous pouvez combiner -G {sec}
(rotation des fichiers dump toutes les X secondes) et -W {count}
(limiter le nombre de fichiers de vidage) pour obtenir ce que vous voulez:
tcpdump -G 15 -W 1 -w myfile -i eth0 'port 8080'
durerait 15 secondes et s'arrêterait. Transformez 1,5 heure en secondes et ça devrait marcher.
vous pouvez utiliser 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 fonctionne le mieux pour moi sur Ubuntu 14.04
sudo -i
crontab -e
puis ajouter 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
Notes
- -g indique le nombre de secondes pour le dump à exécuter, cet exemple Court tous les jours de 17h30 à 21h00
- -W est le nombre d'itérations que tcpdump exécutera
- Cron job ne sera pas ajouté tant que vous n'aurez pas sauvegardé et quitté le fichier
- cet exemple est pour capturer des paquets d'un téléphone astérisque le serveur