Hace algun tiempo en BlackHat presentaron un código que hacía ping a un número restringido de IPs escrito en Python el cual a mí me pareció que se podía mejorar mucho y me dediqué a escribir una versión mejorada que permite hacer ping por rango.
Este código se puede ejecutar de la siguiente manera
En Linux: luego de darle permisos de ejecución, tecleamos en el terminal:
$ ./ipPinger.py 10.208.0.0 10.208.10.5y el programa hara ping a acada una de las IPs en el rango especificado
En Windows:
> python ipPinger.py 10.208.0.0 10.208.10.5
y se obtiene el mismo resultado
Cualquier duda pueden preguntar sin pena.
#!/usr/bin/env python
import os
import sys
def Acarreo(IP, iByte = 3):
if iByte == -1:
return IP
if IP[iByte] > 255:
IP[iByte] = 0
IP[iByte-1] = IP[iByte-1] + 1
Acarreo(IP, iByte - 1)
return IP
def GenerarRango(StartIP, EndIP):
#verificar que StartIP es menor que EndIP
StartIP = map(int,StartIP.split('.'))
EndIP = map(int,EndIP.split('.'))
for i in range(0,4):
if StartIP[i] > EndIP[i]:
#swap values
StartIP , EndIP = EndIP, StartIP
break
rango = []
while not( StartIP[0] == EndIP[0] and \
StartIP[1] == EndIP[1] and \
StartIP[2] == EndIP[2] and \
StartIP[3] == EndIP[3] ):
#acarreo de suma
StartIP = Acarreo(StartIP)
rango.append(str(StartIP[0])+"."+str(StartIP[1])+"."+str(StartIP[2])+"."+str(StartIP[3]))
StartIP[3] = StartIP[3] + 1
return rango
for ip in GenerarRango(sys.argv[1],sys.argv[2]):
os.system("ping "+ip)
