Nuevo en python, necesidad de hacer ping.

Iniciado por ANreZZ, 13 Noviembre 2015, 13:35 PM

0 Miembros y 1 Visitante están viendo este tema.

ANreZZ

Hola chicos! he comenzado con una raspberry y python. Tengo intención de hacer un pequeño programa en python, donde realizar ping periodicamente a determinadas IP (2 o 3 definidas por mi que estarán en una red local) y una tercera por ejemplo a google para determinar si tengo conexion a internet.

Y en base de si tengo conexión/comunicación, realizar diferentes acciones.

Por ahora para empezar a entender el código, me gustaría que si hay conexión usar la función print para que me diga que conexión ok, y si no tengo, por ejemplo que pueda enviar un correo electrónico.

He buscado diferentes códigos de ejemplo por la red, pero todos me dan diferentes tipos de error. Podeis ayudarme?

gracias!!

v4char

Puedes mirarte como usar scapy que te creas tu propios paquetes o si quieres algo mas simple prueba esto

Esto es el peor programa que alguien puede hacer, aviso pero funciona.

Código (python) [Seleccionar]
import os
hostname = "127.0.0.1"
while(1):
  response = os.system("ping -c 1 " + hostname)


ANreZZ

Muchas gracias v4char.
Voy a probarlo, pero dos cosas:
- por que dices que es el peor programa?
- con la función que me indicas, como programo hacer el Ping por ejemplo cada 5 minutos, y hago una cosa u otra según el resultado?

Muchas gracias!!
Enviado desde mi iPhone

Masita

Para realizar acciones cada x minutos podrias usar el metodo sleep() del paquete time.

Código (python) [Seleccionar]

import time
import os

hostname = "www.google.com"
while(1):
    response = os.system("ping -c 1 " + hostname)
    if response == 0:
        print "Hay conexion"
    else:
        print "No hay conexion"

    time.sleep(300)




En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....

v4char

Cita de: ANreZZ en 13 Noviembre 2015, 15:04 PM
Muchas gracias v4char.
Voy a probarlo, pero dos cosas:
- por que dices que es el peor programa?
- con la función que me indicas, como programo hacer el Ping por ejemplo cada 5 minutos, y hago una cosa u otra según el resultado?

Muchas gracias!!
Enviado desde mi iPhone

Pues es el peor programa porque estas llamando al comando ping del sistema operativo

ANreZZ

Muchas gracias voy a probarlo!


Enviado desde mi iPhone

ANreZZ

Hola!

acabo de probar el programa, y en todo momento me da en print, q no hay conexion..

Desde luego el ordeandor donde se esta ejecutando tiene conexion a internet, ademas he probado a cambiarlo por una ip local y tambien me dice no hay conexion.

Por si ayuda, estoy utilizando python en windows (aunque luego lo meteré en la raspberry..)

gracias!

тαптяα

quitale el "-c" después del ping y pruebalo

ANreZZ

lo he probado directamente en la raspberry y funciona. ahora lo que he querido intentar es hacer dos ping a la vez, y no lo he conseguido, me da error en el codigo:


import time
import os

hostname = "192.168.0.2"
hostname1 = "www.google.com"

while(1):

    response = os.system("ping -c 1 " + hostname)
    if response == 0:
        print ("El Panel comunica correctamente")
    else:
        print ("El panel no comunica")
while(1)......-:
response1 = os.system("ping -c 1 " + hostname1)
     if response1 == 0:
        print ("Hay conexion a internet")
    else:
        print ("No hay conexiona internet")
    time.sleep(10)


me imagino que no tengo bien la funcion while... no la acabo de entender creo..

тαптяα

Errores en identación.

Revisa como funcionan los bucles en Python.

En Raspberry (Linux) te funciona, si quieres que funcione en windows pon esto:


    response = os.system("ping " + hostname)