Hola a todos, entenderán soy nuevo en Python >:( a ver si me resuelven una dudilla que tengo, habrá algún módulo/librería que me permita obtener los rangos de IP:
Entrada:
Citar190.168.0.1/24
Salida:
Citar190.168.0.0
190.168.0.1
190.168.0.2
...
.
190.168.0.255
Espero que se entienda, saludos
la verdad es que no entiendo muy bien, pero si sabés la dirección 190.168.1.24
el rango seria como iniciar los valores después del último punto desde 0 190.168.1.0 e incrementar en 1 hasta 255 y en todo caso caso usando os haces un ping a la dirección ip que quieras: os.system("ping "+ip)
perdón sino es ni cerca de lo que preguntas.
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)
Acabo de implementar el script que me has proporcionado y no tengo nada que decir, funciona excelente ;-)
Muchas gracias por ayudarme, saludos.