Estoy intentando escribir un script de Python que use el módulo Scapy para hacer ping a un rango interno de IP para determinar qué IP están en línea. Tengo esto hasta ahora:Hacer ping en un rango de IP con Scapy
#!/usr/bin/python
from scapy.all import *
conf.verb = 0
for ip in range(0, 256):
packet = IP(dst="192.168.0." + str(ip), ttl=20)/ICMP()
reply = sr1(packet)
if "192.168." in reply.src:
print reply.src, "is online"
y el programa sentarse un rato sin hacer nada, y luego, si lo mato con CTRL + CI aparece un mensaje de error:
Traceback (most recent call last):
File "sweep.py", line 7, in <module>
if "192.168." in reply.src:
AttributeError: 'NoneType' object has no attribute 'src'
Sin embargo, si Lo intento con una sola dirección IP, en lugar de un rango, funciona. De esta manera:
#!/usr/bin/python
from scapy.all import *
conf.verb = 0
packet = IP(dst="192.168.0.195", ttl=20)/ICMP()
reply = sr1(packet)
if "192.168." in reply.src:
print reply.src, "is online"
¿Alguien sabe cómo puedo solucionar este problema? ¿O tiene alguna otra idea sobre cómo puedo hacer ping en un rango de IP con Scapy para determinar qué hosts están en línea?
Su problema tiene que ver con la asignación del valor de retorno de 'sr1 (paquete)' a la respuesta. No estoy familiarizado con 'scapy' así que no puedo proporcionar más ayuda que eso, pero empiezo allí. – brc