> 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/

Responder a