192.168.1.168のようなIPアドレスがある場合。そして、私たちは192.168.1.0/24で表されるネットワークを持っていますIPアドレスがpython2のネットワークに属しているかどうかを調べる方法は?
ipがネットワークに属しているかどうか調べるには良い方法がありますか?
モデルnetaddrはできると思いますが、分かりませんでした。
192.168.1.168のようなIPアドレスがある場合。そして、私たちは192.168.1.0/24で表されるネットワークを持っていますIPアドレスがpython2のネットワークに属しているかどうかを調べる方法は?
ipがネットワークに属しているかどうか調べるには良い方法がありますか?
モデルnetaddrはできると思いますが、分かりませんでした。
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
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)
感謝。しかし、私の答えは必要にも合うと思いますか? –
@KramerLi:もしOPが喜んで、 'netaddr'パッケージをインストールすることができたら、かなり可能性があります。しかし、それはPythonの一部ではないので、彼らのシステムでは利用できないかもしれません。 –
おかげで非常に多くの –
このコードは_why_に関する 追加のコンテキストを提供し、質問に答える、および/またはそれが 質問が大幅に長期的 値を改善する回答_how_かもしれないが。あなたの答えを[編集]して、説明を加えてください。 –