Je veux que tcpdump écrive les données de paquet brutes dans un fichier et affiche l'analyse des paquets en sortie standard au fur et à mesure que les paquets sont capturés (par analyse, je veux dire les lignes qu'il affiche normalement quand -w est manquant). Quelqu'un peut-il me dire s'il vous plaît comment faire cela?
Voici une façon élégante de faire ce que vous voulez:
tcpdump -w - | tee somefile | tcpdump -r -
Ce qu'il fait:
-w -
dit à tcpdump
d'écrire des données binaires dans stdout
tee
écrit ces données binaires dans un fichier ET dans son propre stdout
-r -
indique au second tcpdump
de récupérer ses données à partir de stdin
Si vous voulez un moyen de le faire sans exécuter tcpdump deux fois, considérez:
Sudo tcpdump port 80 -w $(tty) | tee /tmp/output.txt
A partir de l'invite de commande interactive, vous pouvez utiliser $TTY
À la place de $(tty)
, mais dans un script, le premier ne serait pas défini scénario).
Note latérale: ce n'est pas très Unix-y comme tcpdump vous fait écrire dans un fichier. Les programmes doivent par défaut écrire sur stdout. La redirection vers un fichier est déjà fournie par les constructions Shell. Peut-être y a-t-il une bonne raison pour que tcpdump soit conçu de cette façon, mais je ne sais pas ce que c'est.