2016-05-04 3 views

Antwort

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

Obwohl dieser Code die Frage beantworten kann, bietet zusätzlichen Kontext in Bezug auf _why_ und/oder _how_ es Antworten die Frage würde erheblich verbessern seine langfristige Wert. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. –

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 

Viel einfacher in Python 3.3+:

import ipaddress 

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

Dank. Aber denkst du, dass meine Antwort auch dem Bedürfnis entsprechen kann? –

+0

@KramerLi: Wenn das OP willens und in der Lage ist, das Paket 'netaddr' zu installieren, ist es möglich. Aber es ist nicht Teil von Python, daher ist es möglicherweise nicht auf ihren Systemen verfügbar. –

+0

Vielen Dank –

Verwandte Themen