Lo que seguís el blog de Mi Hora De Código sabréis que estoy programando un J.A.R.V.I.S y quería implementarle un Barrido de ping. Así que esta tarde me he puesto a ello y ya que la gente de [
TheHackerWay] ya habían hecho algo así. Aunque he hecho mis pruebas con
Popen y con
PIPE y no me han convencido al igual que con el
ping -c 3 a mi me gusta mas ver todo el reporte, es una opinión.
No lo tenia nada claro hasta que no me he creado una prueba de concepto para ver que metía python en un txt cuando lo hacia hacer el ping y meter el resultado en una variable.
Como veis el ping lo hace genial dentro del rango que le indique. En este caso le he puesto dos para que el 127.0.0.0 diera error y pudiera ver la diferencia. La salida de un ping con perdidas del 100% tiene una salida de 1 mientras que uno sin perdidas tiene una salida de 0. Al ver esto me he alegrado por que ya tenia todo lo que necesitaba para hacer un barrido en condiciones.
Así ha quedado el codigo:
import subprocess
#esto hace que el resutado se guarde en un txt
def pingOK():
print "OK"
barridoPing = str(direccion + " OK ")
LbarridoPing = open('LbarridoPing.txt', 'a+')
LbarridoPing.write(barridoPing)
LbarridoPing.close()
print "ping guardado con exito"
def pingFail():
print "Fail"
barridoPing = str(direccion + " Fail ")
LbarridoPing = open('LbarridoPing.txt', 'a+')
LbarridoPing.write(barridoPing)
LbarridoPing.close()
print "ping guardado con exito"
def pingMiss():
print "Miss"
barridoPing = str(direccion + " Miss ")
LbarridoPing = open('LbarridoPing.txt', 'a+')
LbarridoPing.write(barridoPing)
LbarridoPing.close()
print "ping guardado con exito"
print """
BPyng <-- esto esta en ASCII ART
"""
#menu
print "[a = Hacer ping con mi propio input] [b= Hacer un barrido ping]"
d1 = raw_input("")
if d1 == "a":
direccion = raw_input("Escribe la direccion de la pagina: ")
busqueda = subprocess.call(['ping', direccion])
if busqueda == 0:
print pingOK()
elif busqueda == 1:
print pingFail()
else:
print pingMiss()
elif d1 == "b":
for ping in range (0,10):
direccion = "127.0.0." + str(ping)
busqueda = subprocess.call(['ping', direccion])
if busqueda == 0:
print pingOK()
elif busqueda == 1:
print pingFail()
else:
print pingMiss()
Seguro que a muchos os parece una tontería pero a mi me ha encantado meterme con esto. Para todo el que los que queráis probar este mini script lo podéis bajar desde mi repositorio en GitHub.
Sed Buenos ;) Acepto críticas.