Sed-Script: von "196.3.50.254.11201" zu "196.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
charno
Beiträge: 636
Registriert: 28.06.2004 20:24:34

Sed-Script: von "196.3.50.254.11201" zu "196.3.50.254"

Beitrag von charno » 02.01.2006 13:54:47

Guten Tag,

Ich würde gerne ein Sed-Script schreiben, dass es mir ermöglicht, aus einer tcpdump-ausgabe nur die Start- und Zieladresse auszugeben. Ich habe es soweit fertiggestellt, dass aus dem ursprünglichen String

Code: Alles auswählen

06:52:36.153814 IP 192.168.1.20.22 > 196.3.50.254.11201: P 11208:11420(212) ack 53 win 8576
die beiden IP-Adressen (Mit angehängter Portnummer) ausgegeben werden. Das sieht dann so aus:

Code: Alles auswählen

192.168.1.20.139 192.168.1.101.1459
Gemacht wird das mit dem Kommando

Code: Alles auswählen

tcpdump -n | sed 's/..:..:......... IP //;s/ >//; s/:.*//'
(Am Anfang wird der Zeitstempel entfernt,danach das >, das zwischen den IPs ist, am schluss dann noch der Rest der Zeile)

Was mit jetzt noch fehlt ist eine Möglichkeit, die Portnummer, die per Punkt von der IP getrennt wird, zu löschen, damit ich wirklich nur noch die IPs habe.

Der Sinn des Ganzen ist es, das Ganze durch xovi (Ein kleines Tool, dass Netzwerk-Traffic grafisch aufbereitet. Zu finden unter http://doxpara.com) zu visualisieren.

Danke für die Hilfe im voraus und ein gutes neues Jahr
Christof

Gimli
Beiträge: 57
Registriert: 02.08.2004 17:45:37

Beitrag von Gimli » 02.01.2006 20:23:08

folgendes Sed-Kommando anhängen:

Code: Alles auswählen

s/^\([0-9]*.[0-9]*.[0-9]*.[0-9]*\).[0-9]* \([0-9]*.[0-9]*.[0-9]*.[0-9]*\).[0-9]*$/\1 \2/
Oder, als Ganzes, alles in einem Schritt (übersichtlicher):

Code: Alles auswählen

sed 's/^[0-9.:]* IP \([0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}\).[0-9]* > \([0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}\).[0-9]*:.*$/\1 \2/'
die '\{1,3\}' könnte man auch durch * ersetzen. Wird dann ein wenig kürzer und übersichtlicher.

Code: Alles auswählen

sed 's/^[0-9.:]* IP \([0-9]*.[0-9]*.[0-9]*.[0-9]*\).[0-9]* > \([0-9]*.[0-9]*.[0-9]*.[0-9]*\).[0-9]*:.*$/\1 \2/'
Alle Versionen sind getestet und funktionieren. Viel Spass damit.

mfg Gimli

charno
Beiträge: 636
Registriert: 28.06.2004 20:24:34

Beitrag von charno » 02.01.2006 20:56:55

hi,

danke vielmals erstmal!

Die Funktion, dass man einen Bereich des 1. s/-Teils in Klammern setzen kann und diese dann per \1, \2 usw. ausgeben kann kannte ich bis anhin nicht, danke vielmals!

MfG
Charno
"Wer sich nicht bewegt, spürt seine Fesseln nicht." - Rosa Luxemburg

Antworten