[Python-de] IP Ranges testen: if ip in range

Gerhard Häring haering_python at gmx.de
Tue Jun 18 22:20:00 EDT 2002


* Tino Lange <tl_news at nexgo.de> [2002-06-18 20:36 +0200]:
> Hallo !
> 
> Gibt's ne einfache Möglichkeit unter Python IP-Ranges zu testen?

IIRC habe ich mal was auf python-list oder in den Vaults of Parnassus
gesehen. Man muss halt ein wenig Bitklauberei betreiben, wenn man es
selber macht. Hier ein Schnellschuss von mir, der vielleicht noch den
einen oder anderen Fehler enthält:

def mkipv4_32(s):
    l = map(int, s.split("."))
    return l[3] + l[2] * 0x100 + l[1] * 0x1000 + l[0] * 0x100000

def mkaddress_range(s):
    ip, pattern = s.split("/")
    ip = mkipv4_32(ip)
    if pattern == "" or pattern == "0":
        pattern = ~0
    else:
        pattern = ~int("1" * (32 - int(pattern)), 2)
    return ip, pattern
    
def is_in_range(ip, adr_range):
    ip = mkipv4_32(ip)
    return adr_range[0] & adr_range[1] == ip & adr_range[1]
    
print is_in_range("192.168.2.100", mkaddress_range("192.168.2.0/24"))

Gerhard
-- 
This sig powered by Python!
Außentemperatur in München: 27.4 °C      Wind: 1.9 m/s



More information about the Python-de mailing list