Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ANreZZ en 13 Noviembre 2015, 13:35 pm



Título: Nuevo en python, necesidad de hacer ping.
Publicado por: ANreZZ en 13 Noviembre 2015, 13:35 pm
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!!


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: v4char en 13 Noviembre 2015, 14:58 pm
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
  1. import os
  2. hostname = "127.0.0.1"
  3. while(1):
  4.  response = os.system("ping -c 1 " + hostname)
  5.  
  6.  


Título: Nuevo en python, necesidad de hacer ping.
Publicado por: 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


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: Masita en 13 Noviembre 2015, 15:50 pm
Para realizar acciones cada x minutos podrias usar el metodo sleep() del paquete time.

Código
  1. import time
  2. import os
  3.  
  4. hostname = "www.google.com"
  5. while(1):
  6.    response = os.system("ping -c 1 " + hostname)
  7.    if response == 0:
  8.        print "Hay conexion"
  9.    else:
  10.        print "No hay conexion"
  11.  
  12.    time.sleep(300)
  13.  
  14.  




Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: v4char en 13 Noviembre 2015, 16:03 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


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: ANreZZ en 13 Noviembre 2015, 22:23 pm
Muchas gracias voy a probarlo!


Enviado desde mi iPhone


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: ANreZZ en 14 Noviembre 2015, 16:49 pm
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!


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: тαптяα en 14 Noviembre 2015, 17:15 pm
quitale el "-c" después del ping y pruebalo


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: ANreZZ en 14 Noviembre 2015, 17:33 pm
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:

Código:
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..


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: тαптяα en 14 Noviembre 2015, 18:10 pm
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)


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: ANreZZ en 14 Noviembre 2015, 21:25 pm
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


Título: Re: Nuevo en python, necesidad de hacer ping.
Publicado por: Masita en 14 Noviembre 2015, 23:30 pm
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.