我在csv文件中有一组带有标记说明的子网。我需要将这些描述分配给这些子网属于另一个csv文件的数据探测范围。
给定具有ipaddress 34.0.0.0
和网络掩码255.255.0.0
的子网,
我想检查子网是否在34.163.83.230-34.163.83.230
我考虑过从子网的ip和net mask创建一个范围,并将其与Data Probe范围进行比较。我还没有发现这是否会产生正确答案。
我无法使用最新版本的Python(这必须与运行python 2.7的应用程序一起使用),因此ipaddress
模块不适合我。
答案 0 :(得分:1)
socket
模块提供inet_aton
,它会将您的地址转换为位串。然后,您可以使用struct.unpack
将它们转换为整数,使用&
进行掩码,并使用整数比较:
from socket import inet_aton
from struct import unpack
def atol(a):
return unpack(">L", inet_aton(a))[0]
addr = atol("30.44.230.0")
mask = atol("255.255.0.0")
lo = atol("32.44.230.0")
hi = atol("32.44.230.255")
prefix = addr & mask
print lo <= prefix <= hi