1

在 Python 中,我使用IPy模块来处理一组 IP 地址,例如: - Google 的 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?

4

1 回答 1

5

这样的东西:

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])
于 2013-10-23T15:40:31.600 回答