实用的IP地址处理模块IPy
IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、P类型等。Python 提供了一个强大的第三方模块IPy(https://github.com/haypo/python-ipy/)
IPy模块可以很好地辅助我们高效完成IP的规划工作,下面进行详细介绍。
安装方式:pip install IPy
检测方法:
[root@python project]#ipython
In [1]: import IPy
In [2]: dir(IPy)
Out[2]:
['INT_TYPES',
'IP',
'IPSet',
'IPV6_MAP_MASK',
'IPV6_TEST_MAP',
'IPint',
。。。。。。。(省略)
1.2.2、多网络计算方法详解
有时候我们想比较两个网段是否存在包含、重叠等关系,比如同网络但不同prefxlen 会认为是不相等的网段,如10.0.0.0/16不等于10.0.0.0/24,另外即使具有相同的prefxlen但处于不同的网络地址,同样也视为不相等,如10.0.0.0/16不等于192.0.0.0/16。IPy支持类似于数值型数据的比较,以帮助IP对象进行比较,如:
1.多网络实践
简介
相同ip段,不同的掩码获取的ip地址不一样
不同ip段,相同的掩码获取的ip地址不一样
而不同的网段,彼此之间有可能存在ip地址重合
简单实践
from IPy import IP
#1 掩码的作用
#1-1 相同ip段,不同的掩码获取的ip地址不一样
ip_range = IP('192.168.8.0/30') #192.168.8.0-192.168.8.3
ip_range = IP('192.168.8.0/27') #192.168.8.0-192.168.9.31
ip_result = ip_range.len()
print("IP网段:{:<17}有{}个ip".format(str(ip_range), ip_result))
for i in ip_range:
print(str(i))
#2 掩码的作用
#2-1 不同ip段,相同的掩码获取的ip地址不一样
ip_range = IP('192.168.8.0/30') #192.168.8.0-