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!
:
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


0