安装
1.先下载源码,地址:
https://pypi.python.org/pypi/IPy/
,然后解压后使用命令
python setup.py install
安装。
2.或者直接使用
pip install ipy
进行安装
使用
查看IP地址版本
>>> IPy.IP('192.168.1.1').version()
>>> IPy.IP('::1').version()
6
计算网段IP数量
#!/usr/bin/env python
#coding:utf-8
import IPy
ip = IPy.IP('192.168.0.0/28')
# len()方法可以计算网段的IP个数
print ip.len()
for i in ip:
print i
[root@sg data]# python ip.py
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15
反向解析名称、IP类型、IP转换等
>>> ip = IPy.IP('192.168.1.1')
>>> ip.reverseName() # 反向解析
'1.1.168.192.in-addr.arpa.'
>>> ip.iptype() # ip类型-私网ip
'PRIVATE'
>>> IPy.IP('8.8.8.8').iptype() # ip类型-公网ip
'PUBLIC'
>>> IPy.IP('8.8.8.8').int() # 转换为整型格式
134744072
>>> IPy.IP('8.8.8.8').strHex() # 转换为十六进制格式
'0x8080808'
>>> IPy.IP('8.8.8.8').strBin() # 转换成二进制格式
'00001000000010000000100000001000'
>>> print IPy.IP('0x8080808') # 十六进制转换为IP格式
8.8.8.8
>>> print IPy.IP(134744072) # 整型格式转换为IP格式
8.8.8.8
网络地址的转换
>>> print (IPy.IP('192.168.1.0').make_net('255.255.255.0'))
192.168.1.0/24
>>> print (IPy.IP('192.168.1.0/255.255.255.0',make_net=True))
192.168.1.0/24
>>> print IPy.IP('192.168.1.0-192.168.1.255',make_net=True)
192.168.1.0/24
定制不同输出类型的网段
通过strNormal方法指定不同wantprefixlen参数值以定制不同输出类型的网段,输出类型为字符串.
>>> IPy.IP('192.168.1.0/24').strNormal(0)
'192.168.1.0' # 无返回
>>> IPy.IP('192.168.1.0/24').strNormal(1)
'192.168.1.0/24' # prefix格式
>>> IPy.IP('192.168.1.0/24').strNormal(2)
'192.168.1.0/255.255.255.0' # decimalnetmask格式
>>> IPy.IP('192.168.1.0/24').strNormal(3)
'192.168.1.0-192.168.1.255' # lastIP格式
多网络计算方法详解
比较两个网段是否存在包含、重叠等关系,比如同网络但不同prefixlen会认为是不相等的网段,如10.0.0.0/16不等于10.0.0.0/24,另外即使具有相同的prefixlen但处于不同的网络地址,同样也视为不相等,如10.0.0.0/16不等于192.0.0.0/16。IPy支持类似于数值型数据的比较,以帮助IP对象进行比较
>>> IPy.IP('10.0.0.0/24') < IPy.IP('12.0.0.0/24') # 比较IP大小
>>> '192.168.1.110' in IPy.IP('192.168.1.0/24') # 判断IP地址和网段是否包含于另一个网段中
>>> '192.168.1.110' in IPy.IP('192.168.1.0/32')
False