<br />&gt;&gt; import os,re <br />&gt;&gt; from multiprocessing import Process, Lock <br
/>&gt;&gt; <br />&gt;&gt; def ping(lck, host): <br />&gt;&gt; &nbsp;&nbsp;&nbsp; options
= '-n 1 -w 2 ' <br />&gt;&gt; &nbsp;&nbsp;&nbsp; f = os.popen('ping ' + options + host)
<br />&gt;&gt; &nbsp;&nbsp;&nbsp; data = f.read() <br />&gt;&gt; &nbsp;&nbsp;&nbsp;
match = re.search(r&quot;\b(?:\d{1,3}\.){3}\d{1,3}\b(?=.+TTL)&quot;, data) # <br
/>&gt;&gt; machea una direccion ip utilizada <br />&gt;&gt; &nbsp;&nbsp;&nbsp; if match:
<br />&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ip = match.group() <br
/>&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lck.acquire() <br />&gt;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ip <br />&gt;&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lck.release() <br />&gt;&gt; <br />&gt;&gt;
<br />&gt;&gt; if __name__ == '__main__': <br />&gt;&gt; &nbsp;&nbsp;&nbsp; lock =
Lock() <br />&gt;&gt; <br />&gt;&gt; &nbsp;&nbsp;&nbsp; for host in
['10.14.16.5','10.14.19.12']: <br />&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Process(target=ping, args=(lock, host)).start() <br />&gt;&gt; <br />&gt;&gt; Que parece
funcionar bien. Pero aqui el problema es como a partir de una <br />&gt;&gt; direccion
de red (10.14.16.0/22) generar una lista de ip&nbsp;similar a la que <br />&gt;&gt;
utilizo arriba (pero con todos). <br />&gt;&gt; <br />&gt;&gt; Saludos. <br />&gt;&gt;
Boris&nbsp;<br /> <br />&gt; <br />&gt; Tambi&eacute;n puedes usar scapy para eso. En el
propio manual de scapy <br />&gt; tienes un ejemplo [1] <br />&gt; <br
/>&gt;&gt;&gt;&gt; net = IP(dst=&quot;10.14.16.0/22&quot;) <br />&gt;&gt;&gt;&gt; [pkt
for pkt in net] <br />&gt; [&lt;IP dst=10.14.16.0 |&gt;, &lt;IP dst=10.14.17.0 |&gt;,
&lt;IP dst=10.14.18.0 <br />&gt; |&gt;, &lt;IP dst=10.14.19.0 |&gt;, &lt;IP
dst=10.14.16.1 |&gt;, &lt;IP <br />&gt; dst=10.14.17.1 |&gt;, &lt;IP dst=10.14.18.1
|&gt;, &lt;IP dst=10.14.19.1 |&gt;, &lt;IP <br />&gt; dst=10.14.16.2 |&gt;, &lt;IP
dst=10.14.17.2 |&gt;, &lt;IP dst=10.14.18.2 |&gt;, <br />&gt; &lt;IP dst=10.14.19.2
|&gt;,... <br />&gt; <br />&gt; Intenta hacer funcionar scapy porque &eacute;l ya
implementa todo lo que <br />&gt; puedas necesitar. <br />&gt; <br />&gt; Esto
ser&iacute;a m&aacute;s o menos lo que buscas. Lista las IP de los host que <br />&gt;
respondan a &quot;ping&quot;. <br />&gt; <br />&gt; ans, unans =
sr(IP(dst=&quot;10.14.18.0/22&quot;)/ICMP(), timeout=10) <br />&gt; for pkt in ans: <br
/>&gt; print pkt[0].dst <br />&gt; <br />&gt; <br />&gt; Saludos <br />&gt; <br
/>Hola,<br />Ok, eso hare.<br />El problema es que para el trabajo que tengo que hacer
me gustaria no tener que instalar scapy, digamos que es algo problematico para Windows
ya que fue pensado para Linux &nbsp;y lo que tengo que hacer debe funcionar en Windows y
Linux, ademas scapy es un &quot;monstruo&quot; en el buen sentido de la palabra, yo lo
usaria en un proyecto que realmente explotara sus posibilidades, claro si no me queda
otra opcion lo voy a usar.<br /><br />El script que mostre arriba me funciona y ya
resolvi lo de generar las ip a partir de la direccion de red. Lo que no puedo resolver
es que en vez de imprimir en pantalla los ip me los ponga en una lista y la devuelva.<br
/><br />Si hago algo asi:<br /><br />import os,re,&nbsp;hosts<br /> from multiprocessing
import Process, Lock&nbsp;<br /><br />ipList&nbsp; = []&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
la lista de ips<br /><br />def ping(lck, host):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
...etc, etc<br /><br /><br />lck.acquire()<br />ipList.append(ip)&nbsp; #Cambie
&quot;print ip&quot; por append(ip)&nbsp;<br /> lck.release()<br /><br />........etc,
etc<br /><br />for host in hosts.GetList():<br />&nbsp;<br />se cuelga.<br />