[Tutor] searching for an ip and subnets in a dir of csv's
Wayne
srilyk at gmail.com
Wed Jul 29 15:05:58 CEST 2009
On Wed, Jul 29, 2009 at 7:43 AM, Nick Burgess <burgess.nick at gmail.com>wrote:
> And you were looking for 192.168.1.2, do you want it to return nothing? Or
> both 192.168.1.1 and 192.168.1.10? Or only 192.168.1.1 as it's the closest
> match?
>
> I would like it to return both, all possible matches.
>
> The data looks something like this in the CSV's,
>
> Server foo.bar.org 10.2.2.2 such&such org
> Apache farm subnet 10.2.3.0/24 so&so corp.
>
> the format is random
>
> The script will be ran from a third party tool so only one argument
> can be passed to it which will be an entire IP address. If within the
> CSV's there is no 32 bit match there could be a subnet that might
> match, thats why I need it to loop over the dots. If there is a 32
> bit and a subnet match both will be returned which is desirable .
http://www.velocityreviews.com/forums/t356058-regular-expressions-and-matches.html
That will give you the regex for matching any IP addresses. If you use the
findall method
http://docs.python.org/library/re.html
then it will give you a list of IPs (as strings).
If you packed each of these IPs into a dictionary you could use this to get
the key:
for ip in iplist:
key = ip[:ip.rfind('.')] # Gets everything but the last bit
if mydict.get(key):
mydict[key].append(ip)
else:
mydict[key] = [ip]
Then you just have to do something like
mydict.get(sys.argv[1][:sys.argv[1].rfind('.')]
Which will return None or the list of IPs.
Although now that I'm thinking a little more about it, that's probably
excessive for your needs - you can just do this:
matches = []
ipnet = sys.argv[1][:sys.argv[1].rfind('.')]
for ip in iplist:
if ip.startswith(ipnet):
matches.append(ip)
and that should give you a list of all IPs within that same subnet.
HTH,
Wayne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20090729/86f4208c/attachment.htm>
More information about the Tutor
mailing list