2013-10-23 40 views
1

在Python我使用IPy模塊與一組IP地址等的工作: - 谷歌的DNS(8.8.8.8) - 其他一些谷歌的IP,如209.85.128.0/17 等如何確定IPy在白名單中的IP地址?

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?

回答

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]) 
+0

是的,但我有多個IP範圍。 – jmnwong

+0

這只是一個例子。你可以遍歷你的集合中的範圍。我用另一個例子更新了答案。 – Excambion