4 funciones
primero
import socket, struct
def ip2long(ip):#convierte octetos a long
return struct.unpack("!L", socket.inet_aton(ip))[0]
def long2ip(ip):#convierte long en octetos
return socket.inet_ntoa(struct.pack("!L",ip))
def ipmask(bits):#crea un mascara de la cantidad bits en formato long
return ((1<<(bits))-1)<<(32-bits)
def iprange(ip,mask):#entrega una tupla con la primera y ultima ip del rango
return [ip&ipmask(mask),ip|(ipmask(mask)^(1<<32)-1)]
allí tienes todo lo necesario para jugar con IPs
para hacer un rango
longIP = ip2long("127.0.0.1")#creamos el long
extremos = iprange(longIP,24)#entregamos long y mascara
rango = range(extremos[0],extremos[1]+1)#creamos un array
for i in rango: #lo que sea
print long2ip(i)