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!!
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.
import os
hostname = "127.0.0.1"
while(1):
response = os.system("ping -c 1 " + hostname)
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
Para realizar acciones cada x minutos podrias usar el metodo sleep() del paquete time.
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)
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
Muchas gracias voy a probarlo!
Enviado desde mi iPhone
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
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)
Mira que error me da en al raspberry:
(http://images.tapatalk-cdn.com/15/11/14/4bfc026652c89d397f330a2cec76412d.jpg)
Gracias x la ayuda!!
Enviado desde mi iPhone
Como te han dicho el error se debe a que no has indentado. Fijate en los codigos que te dejamos y la parte que tu has añadido. Mi consejo es que leas algun libro sobre python o te pases por esta web. www.codecademy.com/es y aprendas lo basico sobre python.