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

Christian Theune ct at gocept.com
Di Okt 27 07:03:48 UTC 2009


On 10/26/2009 09:24 AM, Sven Teresniak wrote:
> Hallo Volker
> 
> On Sun, 25 Oct 2009 20:16:19 +0100
> DVJ = "Dr. Volker Jaenisch" <volker.jaenisch at inqbus.de> wrote:
> 
> DVJ>  Ad 2):
> DVJ>  Bein generieren von IPs machte ich es mir bisher einfach, suche aber für die Produktion etwas
> DVJ>  eleganteres und effizienteres.
> 
> DVJ>  Wie kann man das besser machen?
> 
> l=[]
> urandom=open("/dev/urandom")
> 
> def randomIP4_3(urandom):
>         global l
>         if len(l)<4:
>                 l=struct.unpack("B"*4000, urandom.read(4000))
>                 l=[`i` for i in l if i not in (0, 255)]      

Diese Zeile sieht nicht so aus als wenn sie tut was du willst.

>         s=".".join((l.pop(), l.pop(), l.pop(), l.pop()))
>         return s
> 
> def randomIP6_3(urandom):
>         global l
>         if len(l)<32:
>                 l=struct.unpack("H"*4000, urandom.read(8000))
>                 l=["%x" % i for i in l if i not in (0, 0xffff)]

Siehe oben.

>         s=":".join((l.pop(), l.pop(), l.pop(), l.pop(),l.pop(), l.pop(), l.pop(), l.pop()))
>         return s

Hmm, da fallen mir ja dir Augen raus (was die Eleganz angeht). Ich guck
mal wo die Performance eigentlich herkommt und ob das etwas eleganter
auch noch schnell ist (was es IMHO sein sollte).

Theuni

-- 
Christian Theune · ct at gocept.com
gocept gmbh & co. kg · forsterstraße 29 · 06112 halle (saale) · germany
http://gocept.com · tel +49 345 1229889 0 · fax +49 345 1229889 1
Zope and Plone consulting and development



Mehr Informationen über die Mailingliste Python-Leipzig