2、实用的IP地址处理模块IPy
下载地址
https://pypi.python.org/packages/source/I/IPy/
安装
python setup.py install
2.1 - 判断IP地址版本
>>> from IPy import IP
>>> IP('10.0.0.0/8').version()
4
>>> IP('::1').version()
6
2.2 - 通过指定网段输出该网段的IP个数和地址清单
[root@lsn-linux ~]# python ip.py
64
182.168.8.0
182.168.8.1
182.168.8.2
182.168.8.3
182.168.8.4
182.168.8.5
182.168.8.6
...
2.3 - 反向解析地址格式
>>> from IPy import IP
>>> ip = IP('192.168.8.1')
>>> ip.reverseNames()
['1.8.168.192.in-addr.arpa.']
2.4 - 判断为公网或私网
>>> IP('8.8.8.8').iptype()
'PUBLIC'
>>> IP('192.168.8.1').iptype()
'PRIVATE'
2.5 - 转换地址格式
>>> IP('192.168.8.1').int() 十进制
3232237569
>>> IP('192.168.8.1').strHex() 十六进制
'0xc0a80801'
>>> IP('192.168.8.1').strBin() 二进制
'11000000101010000000100000000001'
>>> print IP(0xc0a80801) 反向转换
192.168.8.1
>>>
2.6 - 掩码格式转换
>>> print IP('192.168.8.0').make_net('255.255.255.0')
192.168.8.0/24
>>> print IP('192.168.8.0/255.255.255.0',make_net=True)
192.168.8.0/24
>>> print IP('192.168.8.0-192.168.8.255',make_net=True)
192.168.8.0/24
>>> print IP('192.168.8.0-192.168.8.255',make_net=False)
192.168.8.0/24
>>> print IP('192.168.8.0-192.168.8.255')
192.168.8.0/24
2.7 - strNormal方法,返回格式不一样
>>> IP('192.168.8.0/24').strNormal(0)
'192.168.8.0'
>>> IP('192.168.8.0/24').strNormal(1)
'192.168.8.0/24'
>>> IP('192.168.8.0/24').strNormal(2)
'192.168.8.0/255.255.255.0'
>>> IP('192.168.8.0/24').strNormal(3)
'192.168.8.0-192.168.8.255'
>>>
2.8 - 多网络计算方法
IPy支持类似于数值型数据的比较,以帮助IP对象进行比较:
>>> IP('10.0.0.0/24')<IP('11.0.0.0/24')
True
判断IP地址和网段是否包含在另一个网段中:
>>> '192.168.8.1' in IP('192.168.8.0/24')
True
>>> IP('192.168.8.0/26') in IP('192.168.8.0/24')
True
>>>
overlaps判断两个网段是否存在重叠,返回1表示存在重叠,返回0表示不存在
>>> IP('192.168.8.0/26').overlaps('192.168.8.0/24')
1
>>> IP('192.168.8.0/26').overlaps('182.168.8.0/24')
0
>>>
2.9 - 根据输入的IP或子网返回网络、掩码、广播、反向解析、子网数、IP类型等信息。
[root@lsn-linux ~]# python ip2.py
Please Enter:10.0.0.1
reverses address is: 1.0.0.10.in-addr.arpa.
version is: 4
iptype is: PRIVATE
hexadecimal is: 0xa000001
binary is: 00001010000000000000000000000001
[root@lsn-linux ~]# python ip2.py
Please Enter:10.0.0.0/24
net is: 10.0.0.0
mask is: 255.255.255.0
broadcast is: 10.0.0.255
reverses address is: 0.0.10.in-addr.arpa.
下载地址
https://pypi.python.org/packages/source/I/IPy/
安装
python setup.py install
2.1 - 判断IP地址版本
>>> from IPy import IP
>>> IP('10.0.0.0/8').version()
4
>>> IP('::1').version()
6
2.2 - 通过指定网段输出该网段的IP个数和地址清单
#!/usr/bin/python
#__*__ coding:utf-8 __*__
#Filename:ip.py
from IPy import IP
def main():
ip = IP('182.168.8.0/26')
print ip.len()
for x in ip:
print x
if __name__=='__main__':
main()
[root@lsn-linux ~]# python ip.py
64
182.168.8.0
182.168.8.1
182.168.8.2
182.168.8.3
182.168.8.4
182.168.8.5
182.168.8.6
...
2.3 - 反向解析地址格式
>>> from IPy import IP
>>> ip = IP('192.168.8.1')
>>> ip.reverseNames()
['1.8.168.192.in-addr.arpa.']
2.4 - 判断为公网或私网
>>> IP('8.8.8.8').iptype()
'PUBLIC'
>>> IP('192.168.8.1').iptype()
'PRIVATE'
2.5 - 转换地址格式
>>> IP('192.168.8.1').int() 十进制
3232237569
>>> IP('192.168.8.1').strHex() 十六进制
'0xc0a80801'
>>> IP('192.168.8.1').strBin() 二进制
'11000000101010000000100000000001'
>>> print IP(0xc0a80801) 反向转换
192.168.8.1
>>>
2.6 - 掩码格式转换
>>> print IP('192.168.8.0').make_net('255.255.255.0')
192.168.8.0/24
>>> print IP('192.168.8.0/255.255.255.0',make_net=True)
192.168.8.0/24
>>> print IP('192.168.8.0-192.168.8.255',make_net=True)
192.168.8.0/24
>>> print IP('192.168.8.0-192.168.8.255',make_net=False)
192.168.8.0/24
>>> print IP('192.168.8.0-192.168.8.255')
192.168.8.0/24
2.7 - strNormal方法,返回格式不一样
>>> IP('192.168.8.0/24').strNormal(0)
'192.168.8.0'
>>> IP('192.168.8.0/24').strNormal(1)
'192.168.8.0/24'
>>> IP('192.168.8.0/24').strNormal(2)
'192.168.8.0/255.255.255.0'
>>> IP('192.168.8.0/24').strNormal(3)
'192.168.8.0-192.168.8.255'
>>>
2.8 - 多网络计算方法
IPy支持类似于数值型数据的比较,以帮助IP对象进行比较:
>>> IP('10.0.0.0/24')<IP('11.0.0.0/24')
True
判断IP地址和网段是否包含在另一个网段中:
>>> '192.168.8.1' in IP('192.168.8.0/24')
True
>>> IP('192.168.8.0/26') in IP('192.168.8.0/24')
True
>>>
overlaps判断两个网段是否存在重叠,返回1表示存在重叠,返回0表示不存在
>>> IP('192.168.8.0/26').overlaps('192.168.8.0/24')
1
>>> IP('192.168.8.0/26').overlaps('182.168.8.0/24')
0
>>>
2.9 - 根据输入的IP或子网返回网络、掩码、广播、反向解析、子网数、IP类型等信息。
#!/usr/bin/python
#__*__ coding:utf-8 __*__
#Filename:ip2.py
from IPy import IP
def main():
ips=raw_input('Please Enter:')
ip=IP(ips)
if ip.len()>1:
print'net is:',ip.net()
print'mask is:',ip.netmask()
print'broadcast is:',ip.broadcast()
print'reverses address is:',ip.reverseNames()[0]
print'subnet is',len(ip)
else:
print'reverses address is:',ip.reverseNames()[0]
print'version is:',ip.version()
print'iptype is:',ip.iptype()
print'hexadecimal is:',ip.strHex()
print'binary is:',ip.strBin()
if __name__=='__main__':
main()
[root@lsn-linux ~]# python ip2.py
Please Enter:10.0.0.1
reverses address is: 1.0.0.10.in-addr.arpa.
version is: 4
iptype is: PRIVATE
hexadecimal is: 0xa000001
binary is: 00001010000000000000000000000001
[root@lsn-linux ~]# python ip2.py
Please Enter:10.0.0.0/24
net is: 10.0.0.0
mask is: 255.255.255.0
broadcast is: 10.0.0.255
reverses address is: 0.0.10.in-addr.arpa.
subnet is 256