在Python中,我使用IPy模块来处理一组IP地址,例如: - 谷歌的DNS(8.8.8.8) - 其他一些Google IP,例如209.85.128.0/17 等
myWhiteList = Set(IP('8.8.8.8'), IP('209.85.128.0/17'))
目前,我采用IP地址和子网掩码,并创建一个包含表格中所有IP的巨大列表:
for i in IP('209.85.128.0/17'):
myList.add(i)
然后检查我的给定IP是否在此主列表中。有没有更有效的方法来检查IPy列表中的IP而不是像我这样扩展IP?
答案 0 :(得分:3)
像this:
from IPy import IP
if '192.168.0.1' in IP('192.168.0.0/30'):
print "My IP is in the whitelist! Yay!"
或者在您的情况下,如果列表中有多个网络:
for white_net in myWhiteList:
if my_ip in white_net:
print "My IP is in the whitelist! Yay!"
break
或者,您可以将它组合在一行中:
my_ip = '209.85.128.1'
is_in_whitelist = any([my_ip in white_net for white_net in myWhiteList])