[Python-Leipzig] Hallo Liste; Fragen zu IP-Addressen (Parsing und random generation)

Dr. Volker Jaenisch volker.jaenisch at inqbus.de
Mo Okt 26 10:16:53 UTC 2009


Hi Theuni!

Christian Theune schrieb:
> On 10/25/2009 08:16 PM, Dr. Volker Jaenisch wrote:
> Wie kann man das besser machen?
> * einen langen Random-Integer erzeugen und dann zerlegen?
> * Die vielen String-Operationen nerven mich gewaltig an.
>   
>
> Ich weiss nicht wie die Performance ist, aber 'netaddr' ist unser Paket
> der Wahl, wenn es um elegante Handhabung von IP-Adressen geht.
>   
Yep. Wir habe sowohl netaddr als auch IPy im Einsatz. Leider geht es 
nicht nur darum
eine IPv6 IP zu validieren, sondern auch im Log zu finden.

Die aktuell implementierte Lösung ist nicht sehr elegant, aber
* schneller  als die  aus  
http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python
* Erzeugt keine false positives

Einfach eine regex um Dinge zu finden, die nach IPv6 riechen

PATTERN_GLOB_IPV6 = r"""[0-9a-f:.]+"""

dann die ganzen Matches durch den IPy IPv6-Parser jagen zur Validierung.

Damit komme ich auf 2 Min Laufzeit bei 400.000 Zeilen Log.
Der Regex aus dem o.g. Link ist nicht sauber. Er erzeugt falsche 
Positive (z.B. 9 Hexletts)
und braucht 9 Min.

Bin trotzdem für weitere Hinweise dankbar.

Beste Grüße

Volker




Mehr Informationen über die Mailingliste Python-Leipzig