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

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实现子网划分_第1张图片
根据IDC机房需求输出子网划分计划

python实际案例 编写python实现子网划分_第2张图片

你可能感兴趣的:(python,linux)