IP地址处理模块IPy
IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面。
在这个过程中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等
一、IP地址、网段的基本处理
IP类常见的手段包括解析名称、IP类型、IP转化等
In [1]: from IPy import IP
In [2]: len(IP('192.168.0.0/16')) #统计该网段的IP地址个数
Out[2]: 65536
In [3]: ip = IP("192.168.1.20") #实例化一个IP
In [4]: ip.reverseNames() #反向解析地址格式
Out[4]: ['20.1.168.192.in-addr.arpa.']
In [5]: ip.iptype() #私网类型
Out[5]: 'PRIVATE'
In [6]: IP("8.8.8.8").iptype() #公网类型
Out[6]: 'PUBLIC'
In [7]: IP("8.8.8.8").int() #转化成整形格式
Out[7]: 134744072
In [9]: IP("8.8.8.8").strHex() #转化为十六进制格式
Out[9]: '0x8080808'
In [10]: IP("8.8.8.8").strBin() #转化为二进制格式
Out[10]: ''
In [11]: print(IP(0x8080808)) #将十六进制转化为IP格式
8.8.8.8
IP方法也包括网络地址的转换,例如根据IP与掩码生产网段的格式。
In [12]: print(IP("192.168.1.0").make_net("255.255.255.0"))
192.168.1.0/24
In [13]: print(IP("192.168.1.0/255.255.255.0",make_net=True))
192.168.1.0/24
In [14]: print(IP("192.168.1.0-192.168.1.255",make_net=True))
192.168.1.0/24
也可以通过strNormal方法指定不同wantprefixlen参数值以定制不同输出类型的网段,输出类型为字符串。
In [19]: IP("192.168.1.0/24").strNormal(0) #无返回值
Out[19]: '192.168.1.0'
In [20]: IP("192.168.1.0/24").strNormal(1) #prefix格式
Out[20]: '192.168.1.0/24'
In [21]: IP("192.168.1.0/24").strNormal(2) #decimalnetmask格式
Out[21]: '192.168.1.0/255.255.255.0'
In [22]: IP("192.168.1.0/24").strNormal(3) #lastIP格式
Out[22]: '192.168.1.0-192.168.1.255'
二、多网络计算方法
有时候我们想比较两个网段是否存在包含、重叠关系,IPy就可以支持类似于数据类型的比较。
In [23]: IP("192.168.1.0") < IP("192.168.1.1")
Out[23]: True
In [24]: '192.168.1.10' in IP("192.168.1.0/24")
Out[24]: True #IP是否包含在另一个网段中
In [26]: IP("192.168.1.0/24") in IP("192.168.0.0/16")
Out[26]: True #网段是否包含在另一个网段中
#判断两个网段是否存在重叠
In [27]: IP("192.168.0.0/23").overlaps("192.168.1.0/24")
Out[27]: 1 #1代表存在重叠
In [28]: IP("192.168.0.0/23").overlaps("192.168.1.0")
Out[28]: 1
In [29]: IP("192.168.1.0/24").overlaps("192.168.2.0/24")
Out[29]: 0 #0代表不存在重叠
综合实例:根据输入的IP或子网返回网络、掩码、广播、反向解析、子网数等
#!/usr/bin/env python
#coding:utf-8
from IPy import IP ip_s = raw_input("请输入一个ip或者网段:")
ips = IP(ip_s)
if len(ips) > 1:
print "网络地址: %s" % ips.net()
print "子网掩码: %s" % ips.netmask()
print "网络广播地址 : %s" % ips.broadcast()
print "地址反向解析: %s" % ips.reverseNames()[0]
print "网络子网数: %s " % len(ips)
else:
print "IP反向解析: %s " % ips.reverseNames()[0] print "十六进制地址: %s " % ips.strHex()
print "二进制地址: %s " % ips.strBin()
print "地址类型: %s " % ips.iptype()
执行结果:
#输入一个网址
[root@localhost script]# python ip.py
请输入一个ip或者网段:192.168.1.1
IP反向解析: 1.1.168.192.in-addr.arpa.
十六进制地址: 0xc0a80101
二进制地址: 11000000101010000000000100000001
地址类型: PRIVATE
[root@localhost script]# python ip.py #输入一个网段
[root@localhost script]# python ip.py
请输入一个ip或者网段:192.168.1.0/24
网络地址: 192.168.1.0
子网掩码: 255.255.255.0
网络广播地址 : 192.168.1.255
地址反向解析: 1.168.192.in-addr.arpa.
网络子网数: 256
十六进制地址: 0xc0a80100
二进制地址: 11000000101010000000000100000000
地址类型: PRIVATE
IP地址处理模块IPy的更多相关文章
- Python之实用的IP地址处理模块IPy
实用的IP地址处理模块IPy 在IP地址规划中,涉及到计算大量的IP地址,包括网段.网络掩码.广播地址.子网数.IP类型等 别担心,Ipy模块拯救你.Ipy模块可以很好的辅助我们高效的完成IP的规划工 ...
- python自动化运维笔记2 —— IP地址处理模块IPy
1.2 实用的IP地址处理模块IPy ip地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能.可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括 ...
- 实用的IP地址处理模块IPy
https://www.cnblogs.com/cherishry/p/5916935.html IPy安装 pip install IPy IP地址.网段的基本处理 IPy模块包含IP类,使用它可以 ...
- 【python】IP地址处理模块IPy
来源:https://pypi.python.org/pypi/IPy IPy模块 该模块可以方便的处理IPv4和IPv6地址. 以下是从来源中拷贝的一些例子: >>> from I ...
- Python自动化运维——IP地址处理模块
Infi-chu: http://www.cnblogs.com/Infi-chu/ 模块:IPy 功能:辅助我们高效的完成IP的规划工作 安装: wget https://pypi.python.o ...
- IPy模块--IP地址处理
Python之实用的IP地址处理模块IPy 实用的IP地址处理模块IPy 在IP地址规划中,涉及到计算大量的IP地址,包括网段.网络掩码.广播地址.子网数.IP类型等 别担心,Ipy模块拯救你.Ipy ...
- 2.python IP/DNS地址处理之IPy/Dnspython模块
1.IPy模块 在IP地址规划中,涉及到计算大量的IP地址,包括网段.网络掩码.广播地址.子网数.IP类型等,即便是专业的网络人员也要进行繁琐的计算,而IPy模块提供了专门针对IPV4地址与IPV6 ...
- Python 输入IP地址及掩码告诉你该网段包含的全部地址(IPy模块练习)
IPy模块原本使用时需要输入正确的网络位和掩码,我利用处理报错的机制实现了输入任意IP地址和掩码均可正确输出结果的小程序. #!/usr/bin/env python # -*- coding: ut ...
- 【Python】 http客户端库requests & urllib2 以及ip地址处理IPy
requests requests是个HTTPClient库,相比于urllib,urllib2等模块比更加简洁易用 ■ get请求 作为示例,讲一下关于requests如何发起并处理一个get请求 ...
随机推荐
- websocket echo test
http://www.websocket.org/echo.html .net websocket server http://superwebsocket.codeplex.com/ http:// ...
- form表单右边弹窗提示不能为空
if (key == null || key == "") { layer.tips('流程标识key不能为空', $('#search_input'), { tips: [3, ...
- 高分辨率转HTML成PDF(ephtmltopdf.dll)
今天看到园友分享的 wkhtmtopdf--高分辨率转HTML成PDF(三) 想起我做 一键保存网页为PDF_V1.2 的时候,也研究过一段时间这个,一开始也看的是wkhtmltopdf,不过发现wk ...
- SQL注入-数据库判断
0x01.sql注入 sql注入是在系统开发的过程中程序员编程不规范,我们可以通过把SQL语句插入到WEB表单中进行查询字符串,最终达成欺骗服务器执行恶意的SQL命令.对于现在的网站SQL注入越来越严 ...
- 配置LANMP环境(2)-- 安装ifconfig命令与安装SecureCRT
一.安装ifconfig命令 yum whatprovides ifconfig yum install net-tools 安装这个命令就是为了查看虚拟机的ip地址,SecureCRT连接必须要ip ...
- linux 复制粘贴
如果想把文件内的第三行内容黏贴到第十五行: 1.进入你的文件,(处于命令模式,而不是编辑模式) 2.将你的光标移到你的第三行的开头(用方向键) 3,按下v,(你发现切换到可视模式了),按方向键,知道选 ...
- 基于ormlite创建数据库存储数据案例
一直不知道安卓创建数据库存储数据,以前遇到过,但是没有深入研究,今天仔细的看了一下,学习到了一点知识 直接看代码了 public class DatabaseHelper extends OrmLit ...
- linux 文本编辑器
文本编辑器 文本编辑器是Linux操作系统中的重要工具.其中,VI是使用最广泛的文本编辑器,其可以在任何shell中使用.此外,Red Hat Enterprise Linux6 还提供了gedit工 ...
- windows下编译boost for android
env: windows xp 32 bit mingw official NDK 1. 下载源代码 地址是 :http://sourceforge.net/projects/boost/fi ...
- 前端基础------JS
JS中的语句要以分号 ; 为结束符. JS语言基础: 1, JS 的变量名可以使用 下划线, 数字, 字母, $ 组成. 不可以是数字开头 2, 声明变量使用var 变量名. 的格式来进行声明. v ...