2016-05-04 9 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

おかげで非常に多くの –

関連する問題