Hello, **************** What I need : ****************
I need to write a scanner that test all the IP adresses that repond on a given port. The Ip list is of roughly of length 200. I need to get the response every 60 seconds (or better). I would prefer first not to use nmap. **************** Configuration : ***************** Python 2.4.1. To test what is going on I use ethereal. I am using winXP pro on a 2GHZ P4 and 512 Mo. *********** Problem : *********** I tried to implement a simplistic threaded version where each thread is opening a blocking socket on the IP and port. I have monitored using etherereal that I get one arp query every second roughly. I am expecting a speed on the same oder of magnitude as the one that one can get from a standard IP/port scanner. To compare, I have used angry Ip scanner and I have seen that roughly 200 arp request where sent in 20 seconds. ******* Also : ******* I have also considered using some asynchrone connection but AFAIK you need first to open the socket and so to use the arp protocol. Thanks I advance for your help. Sebastien. ***************** Code sample : ***************** # Sebastien 6/9/2006 for testing purposes import time import Queue from threading import * import threading import socket try : import psyco psyco.full() except : pass class socket_test (Thread): def __init__ (self,adresse): Thread.__init__(self) self.PORT=21 self.adresse=str(adresse) print "in thread adresse = ", self.adresse self.service=[] self.start() def run(self) : service_unit=socket.socket(socket.AF_INET, socket.SOCK_STREAM) service_unit.setblocking(1) print "socket Ip = ",self.adresse try : service_unit.connect((str(self.adresse), self.PORT)) except Exception,e: print "exception ",e self.service.append(service_unit) class groupe_thread : def __init__(self,liste): self.liste=liste def go(self): print "self.liste = ",self.liste for el in self.liste : print "go starting thread on : ",el s=socket_test(el) liste=[] base ="192.168.3." rang=range(1,50) for r in rang: add=base+str(r) liste.append(add) a=groupe_thread(liste) ut= a.go() print "the end (main) .." -- http://mail.python.org/mailman/listinfo/python-list