Este blog ya no está activo, sigue informándote aquí:

miércoles, 23 de abril de 2014

BPyng.- Barrido Ping en Python. Se Aceptan Criticas

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. 

1 comentario:

  1. Buenas tardes, se que el post es bastante viejo pero, estoy empezando a crear mis propios programitas y este me a ayudado bastante a entender la progamacion...
    Pero al ejecutar el ping a una Ip de destino inaccesible me tira OK:
    [a = Hacer ping con mi propio input][b= Hacer un barrido ping]
    a
    Escribe la direccion de la pagina: 192.168.0.233

    Haciendo ping a 192.168.0.233 con 32 bytes de datos:
    Respuesta desde 192.168.0.107: Host de destino inaccesible.
    Respuesta desde 192.168.0.107: Host de destino inaccesible.
    Respuesta desde 192.168.0.107: Host de destino inaccesible.
    Respuesta desde 192.168.0.107: Host de destino inaccesible.

    Estadísticas de ping para 192.168.0.233:
    Paquetes: enviados = 4, recibidos = 4, perdidos = 0
    (0% perdidos),
    OK
    ping guardado con exito
    None

    Si me puedes ayudar seria genial!

    ResponderEliminar