2016-05-04 60 views

回答

1
import netaddr 

ip = netaddr.IPAddress('192.168.1.168').value 
network = netaddr.IPNetwork('192.168.1.0/24') 

if ip >= network.first and ip <= network.last: 
    print True 
else: 
    print False 
+1

雖然這段代碼可能會回答這個問題,但提供 關於_why_和/或_how_的附加上下文會回答 這個問題會顯着改善它的長期 值。請[編輯]你的答案,添加一些解釋。 –

0
import socket 
import struct 

def in_net(ip, net): 
    ipaddr = socket.inet_aton(ip) 
    netaddr, netmask = net.split('/') 
    netaddr = socket.inet_aton(netaddr) 

    ipint = struct.unpack("!I", ipaddr)[0] 
    netint = struct.unpack("!I", netaddr)[0] 
    maskint = (0xFFFFFFFF << (32 - int(netmask))) & 0xFFFFFFFF 

    return ipint & maskint == netint 

在Python 3.3+得多:

import ipaddress 

def in_net(ip, net): 
    return ipaddress.ip_address(ip) in ipaddress.ip_network(net) 
+0

感謝。但你認爲我的答案也能滿足需要嗎? –

+0

@KramerLi:如果OP願意並且能夠安裝'netaddr'包,很可能。但它不是Python的一部分,因此它可能不適用於他們的系統。 –

+0

非常感謝 –