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

Dr. Volker Jaenisch volker.jaenisch at inqbus.de
So Okt 25 19:16:19 UTC 2009


Hallo Python-Freunde in Leipzig!

Ich bin der Volker aus Leipzig, programiere seit mehr als 10 Jahren in 
Python
und habe bisher nur einmal geschafft zum Stammtisch zu kommen.

Ich programmiere gerade mit ein paar anderen sächsischen Piraten einen 
IP-Anonymisierungs-Filter
für Logdateien in Python.

Dazu brauche ich 1) leistungsfähige IP-Parser, und 2) effiziente 
Generierung
von Random IPs.

Ad 1):
Geparsed wird nach 
http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python 

jede Zeile einzeln, damit der Parser nicht platzt.
Allerdings sind gerade die regex für IPv6 ein echter Showstopper (Parsen 
nach ipv4: 17 sec, ipv6: 540 sec - gleiche Logdatei output nach /dev/null).
Ich habe schon an einen mehrstufigen Prozess gedacht, der erstmal mit 
einem einfachen regex grob
vorsortiert und danach erst eine vollständige Validierung per regex ala 
stackoverflow. Mir gefällt aber die Idee
die Parse-Logik eng zusammen zu haben, damit sich keine Fehler 
einschleichen.
Aber vielleicht gibt es ja noch einen dritten Weg?

Ad 2):
Bein generieren von IPs machte ich es mir bisher einfach, suche aber für 
die Produktion etwas
eleganteres und effizienteres.

def randomIP4():
    return \
    str(random.randint(0, 0xff)) + '.' + \
    str(random.randint(0, 0xff)) + '.' + \
    str(random.randint(0, 0xff)) + '.' + \
    str(random.randint(0, 0xff))

def randomIP6():
    return \
    "2000:" + \
    hex(random.randint(0, 0xffff))[2:] + ':' + \
    hex(random.randint(0, 0xffff))[2:] + ':' + \
    hex(random.randint(0, 0xffff))[2:] + ':' + \
    hex(random.randint(0, 0xffff))[2:] + ':' + \
    hex(random.randint(0, 0xffff))[2:] + ':' + \
    hex(random.randint(0, 0xffff))[2:] + ':' + \
    hex(random.randint(0, 0xffff))[2:]

Wie kann man das besser machen?
* einen langen Random-Integer erzeugen und dann zerlegen?
* Die vielen String-Operationen nerven mich gewaltig an.

Hat jemand Vorschläge?

Beste Grüße

Volker

-- 
====================================================
   inqbus it-consulting      +49 ( 341 )  5643800
   Dr.  Volker Jaenisch      http://www.inqbus.de
   Herloßsohnstr.    12      0 4 1 5 5    Leipzig
   N  O  T -  F Ä L L E      +49 ( 170 )  3113748
====================================================




Mehr Informationen über die Mailingliste Python-Leipzig