链接: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
文章图片
根据IDC机房需求输出子网划分计划
文章图片
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Linux|109 个实用 shell 脚本
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- linux笔记|linux 常用命令汇总(面向面试)
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- Linux|Linux--网络基础