> El 23 de febrero de 2010 17:38, Boris Perez Canedo > <inf200...@ucf.edu.cu> escribi�: > >> Hace pocos dias escribi sobre la instalacion de scapy en Windows. En ese momento >> trataba de instalar scapy �usando python2.6. Me daba un error de sintaxis con la >> palabra "with" que es reservada para python2.6 en adelante y que aparentemente scapy >> usa como variable. Hice algo que no se si esta del todo bien, borre la variable with >> que se pasaba como argumento en�dos funciones de la siquiente manera: >> >> tr = map(lambda x: Gnuplot.Data(x,"lines"), trt.values())# with = "lines" >> >> world = Gnuplot.File(conf.gnuplot_world,"lines")# with = "lines" >> >> donde ahora esta "lines" antes estuvo with = "lines" pero esto en python2.6 da el >> error ya mencionado. > > Es posible que el truco funcione. > > Hacerte notar que el fallo est� en Gnuplot, m�s que en scapy. Aunque > el proyecto python-gnuplot hace tiempo que no se actualiza, > distribuciones como ubuntu han sustitu�do en gnuplot 'with' por > 'with_' (con subrayado), cambiando la API que usan otros paquetes como > scapy: > > <http://trac.secdev.org/scapy/changeset/852:055a9be0f2d3> > > >> Todo parecia funcionar bien hasta que corro este script y me da el siguiente error que >> me parece no tiene nada que ver con lo que hice ya que el paquete para graficos no lo >> instale pq�no lo necesitaba. >> >> Obtener todos los ip usados en una subred. >> mi subnet mask es 255.255.252.0 >> mi direccion ip 10.14.19.12 >> por si me equivoque al determinar la direccion de red.(10.14.16.0/22) >> >> from scapy import * >> ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="10.14.16.0/22"),timeout=2) >> ans.summary(lambda (s,r): r.sprintf("%Ether.src% %ARP.psrc%") ) >> >> El error: >> >> Begin emission: >> Finished to send 1024 packets.(aqui todo parece bien) >> >> Traceback (most recent call last): >> � File "D:\Trabajo\scripts\arping.py", line 2, in <module> >> ��� ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="10.14.16.0/22"),timeout=2) >> � File "C:\Python26\lib\site-packages\scapy.py", line 11295, in srp >> ��� a,b,c=sndrcv(s ,x,*args,**kargs) >> � File "C:\Python26\lib\site-packages\scapy.py", line 11113, in sndrcv >> ��� os.write(1, ".") >> OSError: [Errno 9] Bad file descriptor >� Hola y disculpen haber tenido que escribir tanto sobre mi problema.� Acabo de correr el script en Windows y funciona, lo que sucedia era que antes lo corri desde el IDLE de python2.6 y por eso daba el error, pero cuando lei tu comentario > Da error al intentar escribir en el fichero con id=1, probablemente > stdout/stdin en sistemas linux. > se me ocurrio correrlo desde la consola. Voy a ver si en Ubuntu obtengo el mismo resultado. Muchas gracias. Otra cosa, estoy utilizando el scapy para obtener entre otras cosas los ips utilizados en una subred dada. Mientras me rompia la cabeza pensando que era lo que salia mal con scapy,�pense en hacer algo como esto: import os,re from multiprocessing import Process, Lock def ping(lck, host): ��� options = '-n 1 -w 2 ' ��� f = os.popen('ping ' + options + host) ��� data = f.read() ��� match = re.search(r"\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL)", data) # machea una direccion ip utilizada ��� if match: ������� ip = match.group() ������� lck.acquire() ������� print ip ������� lck.release() ��� if __name__ == '__main__': ��� lock = Lock() ��� for host in ['10.14.16.5','10.14.19.12']: ������� Process(target=ping, args=(lock, host)).start() Que parece funcionar bien. Pero aqui el problema es como a partir de una direccion de red (10.14.16.0/22) generar una lista de ip�similar a la que utilizo arriba (pero con todos). Saludos. Boris � --- La mejor vacuna contra el virus A(H1N1) es la higiene personal
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/