Python - ping en pyton

 
Vista:

ping en pyton

Publicado por carcaharas (4 intervenciones) el 16/05/2007 17:36:01
Hola buenas!
Tengo que conseguir hacer funcionar un codigo en pyton que simule un ping. He buscado por internet y encuentro muchos códigos pero no me funciona ninguno.En todos me da error.
Un´código por ejemplo seria:

import os
import re
from threading import Thread
import socket

import struct
from gettext import gettext as _

if "DISPLAY" in os.environ:
if os.environ["DISPLAY"] != "":
import gtk


def print_debug(txt):
if shared.debug:
print "%s::%s" %(__name__, txt)

class pingip(Thread):
def __init__ (self,ip):
Thread.__init__(self)
self.ip = ip
self.status = -1
self.lifeline = re.compile(r"(\d) received")
def run(self):
#print_debug ( "pingip() %s" %(self.ip) )
pingaling = os.popen("ping -q -W 1 -c2 "+self.ip,"r")
while 1:
line = pingaling.readline()
if not line: break
igot = re.findall(self.lifeline,line)
if igot:
self.status = int(igot[0])

class Ping:
def __init__(self, main):
print_debug ( "__init__()" )
self.main=main
self.reachip=[]

def ping_iprange(self, selfip):
pinglist = []
reachip =[]
for i in range(1,255):
iprange=selfip.split(".")[:-1]
ip=".".join(iprange)+"."+str(i)
#print "ping to %s" %(ip)
if self.main.worker.is_stoped():
# this is a stop thread var
break
##########
gtk.gdk.threads_enter()
self.main.progressbar.show()
self.main.progressbutton.show()
self.main.actions.set_progressbar( _("Ping to %s...") \
%(ip), float(i)/float(254) )
gtk.gdk.threads_leave()
############
current = pingip(ip)
pinglist.append(current)
current.start()

gtk.gdk.threads_enter()
self.main.actions.set_progressbar( _("Waiting for pings...") , float(1) )
gtk.gdk.threads_leave()

for pingle in pinglist:
pingle.join()
if pingle.status == 2:
reachip.append(pingle.ip)

self.main.worker.set_finished()

if len(reachip) == 0:
gtk.gdk.threads_enter()
self.main.write_into_statusbar ( _("No host found") )
self.main.progressbar.hide()
self.main.progressbutton.hide()
gtk.gdk.threads_enter()

if len(reachip) > 0:
gtk.gdk.threads_enter()
self.main.write_into_statusbar ( _("Found %d hosts" ) %len(reachip) )
gtk.gdk.threads_leave()

self.main.localdata.allclients=reachip

self.main.worker=shared.Workers( self.main,\
target=self.main.actions.populate_hostlist, args=([reachip]) )
self.main.worker.start()

return reachip

def get_ip_address(self, ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])

Entonces para ejecutarlo uso el pyton 2.5 y pongo
ping 192.168.3.66
por ejemplo y me dice: Syntax error en 3.66

Me pasa con todos los códigos que pruebo, por que puede ser?
Un saludo y gracias!

:
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ping en pyton

Publicado por nombre (1 intervención) el 13/06/2007 19:10:17
Aquí te dejo el ping en Python que presenté para las prácticas de Arquitectura de Redes, de la ULE.
Ánimo, que ya sólo nos queda el navegador :D


import os
xyz = 1
print """----------------------
Modo de uso:
Escribe una IP, para ver si esta online.

Para un rango de IP's:
Escribe la palabra RANGE y pulsa intro.Escribe las 3 primeras secciones
(Ejemplo: 192.168.2) y el programa te pedira el primer numero del rango
(Ejemplo: 10) y el ultimo (Ejemplo: 20).

Escribe exit para salir.
----------------------
"""
while xyz==1:
ip = raw_input(">> ")
zx = open("log.txt", "a")
if ip.lower()=="exit":
ask = raw_input("Seguro que desea salir? (S\\N) ")
if ask.lower()=="s":
exit()
elif ask.lower()=="n":
print("continuamos...")
else:
print("Eleccion incorrecta.")
elif ip.lower()=="range":
sec = raw_input("Escribe las 3 primeras secciones: ")
b = int(raw_input("Escribe el primer host: "))
e = int(raw_input("Escribe el ultimo host: "))
on = 0
of = 0
while b<=e:
z = os.system("ping "+str(sec)+"."+str(b)+" -n 1")
if z==0:
print(""+str(sec)+"."+str(b)+" esta online.")
on = on + 1
zx.write(""+str(sec)+"."+str(b)+" esta online.\n")
print ("---------------------------------------------------\n")

elif z==1:
print("La ip "+str(sec)+"."+str(b)+" esta offline, o el ping ha sido bloqueado.")
of = of + 1
zx.write("La ip "+str(sec)+"."+str(b)+" esta offline, o el ping ha sido bloqueado.\n")
print ("---------------------------------------------------\n")
b = b + 1
else:
x = os.system("ping %s -n 1" %ip)
if x==0:
print("%s esta online." %ip)
print ("---------------------------------------------------\n")
elif x==1:
print("La ip %s esta offline, o el ping ha sido bloqueado." %ip)
print ("----------------------------------------------------\n")
print("%d host online." %on)
print("%d host offline. " %of)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ping en pyton

Publicado por la virgen (1 intervención) el 22/10/2007 23:03:32
menudo curro, te mataste...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ping en pyton

Publicado por Elenion (1 intervención) el 17/11/2007 10:55:19
Muxas gracias,tio!!!
He provado el codigo y si m va,xD,muxas gracias por subirlo me has solucionao la practica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar