首先安装Python扩展库netaddr,然后对下面的代码进行简单修改后即可满足某些场合的应用。
- from random import randrange
- from netaddr import IPRange
-
- def ipRangeTest(ipAddr, ipRange):
- # 遍历IP地址与地区分布对应关系字典
- # 如果ipAddr在某个地区的IP段内
- # 返回该地区名称
- for key, value in ipRange.items():
- if ipAddr in value:
- return key
- return 'unknown'
-
- # 可以根据实际情况替换这个字典的内容
- # 或从IP地址库中读入信息
- ipRange = {'area1':IPRange('10.2.1.0', '10.2.1.255'),
- 'area2':IPRange('10.2.2.0', '10.2.2.255'),
- 'area3':IPRange('10.3.0.0', '10.3.255.50'),
- 'area4':IPRange('11.1.0.0', '11.1.0.255')}
-
- # 测试
- for _ in range(10):
- a = randrange(9,12)
- b = randrange(1,4)
- c = randrange(4)
- d = randrange(256)
- ipAddr = '.'.join(map(str, (a,b,c,d)))
- print(ipAddr, ipRangeTest(ipAddr,ipRange))
部分运行结果:
9.2.3.40 unknown
10.1.3.67 unknown
11.1.1.54 unknown
9.1.2.243 unknown
9.3.2.182 unknown
10.3.0.30 area3
9.1.1.58 unknown
11.1.2.205 unknown
10.3.2.179 area3
11.3.1.240 unknown