"Donnez-moi" ne vous mènera pas loin ici. Vous devriez peut-être nous montrer ce que vous avez essayé jusqu'à présent et où exactement vous avez des problèmes que vous ne pouvez pas résoudre vous-même.
matthias krull
La commande bash que vous voulez est: "man tcpdump"
William Pursell
Réponses:
15
Si vous souhaitez simplement que tcpdump s'exécute pendant n secondes, puis se termine, vous pouvez utiliser le délai d'expiration.
Par exemple:
timeout 2 tcpdump -eni mon0
Sinon, je ne pense pas que tcpdump ait une option pour le faire.
Malheureusement, la commande de délai d'attente n'est pas présente dans CentOS 5.x. Il a été ajouté dans une version plus récente de coreutils. Une autre motivation pour moi de mettre à jour le système d'exploitation.
Mister_Tom
Je suppose que si vous n'avez pas de délai d'expiration, vous pouvez plutôt créer quelque chose comme le délai d'expiration avec un script:
sieste
Fonctionne très bien pour moi. Je l'ai utilisé pour surveiller tout le trafic d'un programme qui ne fonctionnait pas. J'ai commencé tcpdump avec un timeout de N secondes. J'ai ensuite démarré le programme (qui prend jusqu'à N secondes).
Trevor Boyd Smith
La question demande de capturer les N dernières secondes. Votre réponse indique comment capturer les N premières secondes.
Flimzy
3
Je pense que la meilleure façon d'y parvenir est d'utiliser le drapeau -G de tcpdump, qui, lorsqu'il est utilisé avec -w, enregistrera votre vidage dans un nouveau fichier toutes les N secondes. Par exemple:
tcpdump -w outfile-% s -G 10
Cela va créer un nouveau fichier avec le nom de «outfile-XXXX» (où XXXX représente le nombre de secondes depuis l'époque) toutes les 10 secondes.
Consultez les pages de manuel de tcpdump (8) et strftime (3) pour plus de détails.
tcpdump 3.9.4 tel qu'il est livré avec CentOS 5.10 n'a pas l'option -G. J'ai vraiment besoin de mettre à jour mon système d'exploitation.
Mister_Tom
-G n'arrête pas la commande tcpdump. Il fonctionne toujours pour toujours. Le timeout 2 tcpdump arrêtera la commande après 2 secondes.
ciceron
@ciceron: La question n'était pas d'arrêter tcpdump. Il s'agissait de capturer les N dernières secondes . Votre suggestion capturera les N premières secondes. Décidément pas ce que le PO a demandé.
Flimzy
1
Vous pouvez utiliser tethereal au lieu de tcpdump. Vous pouvez utiliser cette option de ligne de commande:
Bien que cela puisse répondre à la question, ce serait une meilleure réponse si vous pouviez expliquer pourquoi .
DavidPostill
tcpdump lui-même ne permet pas une trace de paquet limitée dans le temps mais tshark le permet. (nb puisque cette question a été posée et répondue, Ethereal est devenu Wireshark) tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcapva capturer l'équivalent de dix minutes de trafic depuis l'interface eth0 dans le fichier $ (hostname) .10mins.pcap
Andrew Beals
0
tcpdump options -w new.tcpdump
ps -ef |grep tcpdump
prenez note du PID, dites qu'il est 11193
at 11:00
kill 11193
maintenant attendez jusqu'à 11h00 et votre capture sera tuée mais enregistrée
sudo tcpdump -i -w et cela fonctionnera tcpdump est en mode veille
w: enregistrer la sortie dans le fichier .pcap &: le processus tcpdump s'exécutera en mode veille note: assurez-vous d'avoir suffisamment d'espace disponible si vous le souhaitez. pour l'exécuter pendant un certain temps. Il n'interrompra pas si vous vous déconnectez jusqu'à ce que vous tuiez le processus.
Réponses:
Si vous souhaitez simplement que tcpdump s'exécute pendant n secondes, puis se termine, vous pouvez utiliser le délai d'expiration.
Par exemple:
Sinon, je ne pense pas que tcpdump ait une option pour le faire.
la source
Je pense que la meilleure façon d'y parvenir est d'utiliser le drapeau -G de tcpdump, qui, lorsqu'il est utilisé avec -w, enregistrera votre vidage dans un nouveau fichier toutes les N secondes. Par exemple:
tcpdump -w outfile-% s -G 10
Cela va créer un nouveau fichier avec le nom de «outfile-XXXX» (où XXXX représente le nombre de secondes depuis l'époque) toutes les 10 secondes.
Consultez les pages de manuel de tcpdump (8) et strftime (3) pour plus de détails.
la source
Vous pouvez utiliser tethereal au lieu de tcpdump. Vous pouvez utiliser cette option de ligne de commande:
la source
tshark -a duration:600 -i eth0 -w $(hostname).10mins.pcap
va capturer l'équivalent de dix minutes de trafic depuis l'interface eth0 dans le fichier $ (hostname) .10mins.pcaptcpdump options -w new.tcpdump
ps -ef |grep tcpdump
prenez note du PID, dites qu'il est 11193
at 11:00 kill 11193
maintenant attendez jusqu'à 11h00 et votre capture sera tuée mais enregistrée
la source
J'essayais de résoudre le même problème, j'ai donc écrit un script portable pour exécuter tcpdump pendant n secondes.
Utilisation ./tcpdump_for_n_sec.sh sec args pour tcpdump
la source
sudo tcpdump -i -w et cela fonctionnera tcpdump est en mode veille
la source