https://pypi.python.org/pypi/IPy/ ,然后解压后使用命令python set。python|python实际案例 编写python实现子网划分。" />

python|python实际案例 编写python实现子网划分

链接:https://pan.baidu.com/s/1hiz4-YaMSbM-hejD5nmEdg
提取码:viie
先分享一个必须的IPy模块包
下载源码,地址:ps://pypi.python.org/pypi/IPy/">https://pypi.python.org/pypi/IPy/ ,然后解压后使用命令python setup.py install安装。

tar xf IPy-1.00.tar.gz cd IPy-1.00 python setup.py install

【python|python实际案例 编写python实现子网划分】windows系统安装
cd d:\python\scripts
pip install IPy
python
import IPy
linux系统默认python已经安装
直接输入python即可进入 并查看到版本
1.操作Ipy模块常用方法
显示IP类型(通过version方法可以的判断输入的IP是IPv4还是IPv6 )
>>> from IPy import IP##引入模块 >>> IP('10.0.0.0/8').version() 4 >>> IP('::1').version() 6

.2 网段计算输出
通过指定的网段输出该网段的ip个数及所有ip地址清单
>>> ip = IP('192.168.0.0/28') 输出这个网段的ip个数 >>> print ip.len() 16 输出这个网段的所有ip地址清单 >>> for x in ip : print x ... 192.168.0.0 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4 ……

可以制作成脚本执行:
[root@localhost ~]# vi test.py from IPy import IP ip = IP('192.168.0.0/28') print ip.len() for x in ip: print x [root@localhost ~]# python test.py

2.3 反向解析名称、ip类型、ip转换
>>> ip = IP('192.168.1.20') 反向解析名称 >>> ip.reverseNames() ['20.1.168.192.in-addr.arpa.']

解析ip地址类型(private–私网地址;public–公网地址)
>>> ip.iptype() 'PRIVATE' >>> IP('8.8.8.8').iptype() 'PUBLIC'

转换成整型格式 >>> IP('8.8.8.8').int() 134744072 转换成十六进制格式 >>> IP('8.8.8.8').strHex() '0x8080808' 转换成二进制格式 >>> IP('8.8.8.8').strBin() '00001000000010000000100000001000'

十六进制转换成ip格式 >>> print (IP(0x8080808)) 8.8.8.8

2.4 支持网络地址转换。
print (IP('192.168.1.0').make_net('255.255.255.0'))print (IP('192.168.1.0/255.255.255.0',make_net=True))print (IP('192.168.1.0-192.168.1.255',make_net=True))

IPy模块应用实例
一个自动识别IP地址、子网、方向解析、IP类型等信息的脚本
[root@localhost ~]# vim 123.py from IPy import IP###加载模块 ip_s = raw_input('please input an ip or net-range: ') ###输入一个IP地址或者网段 ips = IP(ip_s) #定义元素 if len(ips) > 1: #如果len出来的数字大于1,那么就是一个网段 print ('net: %s' %ips.net()) #输出网络地址 print ('netmask: %s' %ips.netmask()) #输出子网掩码 print ('broadcast: %s' %ips.broadcast()) #输出网络广播地址 print ('reverse address: %s' %ips.reverseNames()[0]) #输出ip反向解析 print ('subnet: %s' %len(ips)) #输出网络子网数 else: ###否则就是一个地址 print ('reverse address: %s' %ips.reverseNames()[0]) #输出ip反向解析 print ('hexadecimal: %s' %ips.strHex()) #输出16进制地址 print ('binary ip: %s' %ips.strBin()) #输出二进制地址 print ('iptype: %s' %ips.iptype())#输出地址类型 ~ 输入一个ip进行解析 [root@localhost ~]# python 123.py

python|python实际案例 编写python实现子网划分
文章图片

根据IDC机房需求输出子网划分计划
python|python实际案例 编写python实现子网划分
文章图片

    推荐阅读