tcpdump: Sortie uniquement les adresses source et de destination

Description du problème:

Je veux imprimer seulement les adresses source et de destination à partir d'un tcpdump[1].

Avoir une solution de travail, mais nous croyons qu'il pourrait être beaucoup améliorée. Un exemple qui capture 5 paquets, un peu comme un exemple de ce que je suis à la recherche de:

tcpdump -i eth1 -n -c 5 ip | \
cut -d" " -f3,5 | \
sed -e 's/^\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\..* \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*$/ > /'

Question:

Cela peut être fait dans n'importe quel moyen plus facile? La Performance est également un problème ici.

[1] Une partie d'un test si le snort home_net est correctement définie, ou si le trafic n'est défini dans la home_net.


Solution:

Ok, merci à tous ceux qui ont répondu à celui-ci. Il y a eu deux préoccupations liées à la les réponses, est la compatibilité entre les différents linux versions et la seconde est la vitesse.

Voici les résultats sur la vitesse de test que j'ai fait. D'abord la commande grep-version:

time tcpdump -l -r test.dmp -n ip 2>/dev/null | grep -P -o '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*? > ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)' | grep -P -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | xargs -n 2 echo >/dev/null

real    0m5.625s
user    0m0.513s
sys     0m4.305s

Puis le sed-version:

time tcpdump -n -r test.dmp ip | sed -une 's/^.* \(\([0-9]\{1,3\}\.\?\)\{4\}\)\..* \(\([0-9]\{1,3\}\.\?\)\{4\}\)\..*$/ > /p' >/dev/null
reading from file test.dmp, link-type EN10MB (Ethernet)

real    0m0.491s
user    0m0.496s
sys     0m0.020s

Et le plus rapide, le awk-version:

time tcpdump -l -r test.dmp -n ip | awk '{ print gensub(/(.*)\..*/,"\","g",$3), $4, gensub(/(.*)\..*/,"\","g",$5) }' >/dev/null
reading from file test.dmp, link-type EN10MB (Ethernet)

real    0m0.093s
user    0m0.111s
sys     0m0.013s

Je n'ai malheureusement pas été en mesure de tester la façon dont ils sont compatibles, mais le awk besoins gnu awk de travailler en raison de la gensub fonction. De toute façon, tous les trois solutions fonctionne sur les deux plates-formes que j'ai testé. 🙂

OriginalL'auteur Eigir | 2012-11-21