python中IP处理模块IPy中文api
1 安装
1. 通过pip在线安装 pip install IPy
2 通过安装包安装,IPy-0.81.tar.gz
2 使用
1 引入
from IPy import IP
常用方法:
1 查看api
help(IP)
2 根据ip和掩码打印该网段内的所有ip
ip = IP('127.0.0.0/30')
for x in ip:
print (str(x))
输出:
也可以打印指定位置的ip
print(str(ip[2]))
输出: 127.0.0.2
打印最后一位
print(str(ip[-1]))
输出:127.0.0.3
3 broadcast(self) 将网络的广播地址作为对象返回,也就是返回最后一个和IP[-1] 一样。
print(str(ip.broadcast()))
输出:127.0.0.3
4 get_mac(self) 从ipv6 地址中计算出mac 地址,都是以小写输出
print(str(IP('fe80::f66d:04ff:fe47:2fae').get_mac()))
输出:f4:6d:04:47:2f:ae
5 make_net(self, netmask) 将单个ip和给定的掩码转换为标准的格式
print(IP('127.0.0.1').make_net('255.0.0.0'))
输出: 127.0.0.0/8
6 net(self) 将网络的基(第一)地址作为IP对象返回,也就是返回第一个和IP[0] 一样。
print (IP('10.0.0.0/8').net())
输出:10.0.0.0
7 netmask(self) 输出ip对象的网络掩码地址
print (IP('10.0.0.0/8').netmask())
输出:255.0.0.0
8 reverseName(self) 将单个ip地址反向解析
print(IP('195.185.1.1').reverseName())
输出:1.1.185.195.in-addr.arpa.
print(IP('195.185.1.0/28').reverseName())
输出:0-15.1.185.195.in-addr.arpa.
print(IP('::1:2').reverseName())
输出:2.0.0.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.
print(IP('ff02::/64').reverseName())
输出:0.0.0.0.0.0.0.0.0.0.0.0.2.0.f.f.ip6.arpa.
9 reverseNames(self) 将ip段反向解析
print(IP('213.221.113.87/32').reverseNames())
输出:['87.113.221.213.in-addr.arpa.']
print(IP('213.221.112.224/30').reverseNames())
输出:['224.112.221.213.in-addr.arpa.', '225.112.221.213.in-addr.arpa.', '226.112.221.213.in-addr.arpa.', '227.112.221.213.in-addr.arpa.']
print(IP('127.0.0.0/24').reverseNames())
输出:['0.0.127.in-addr.arpa.']
print(IP('127.0.0.0/23').reverseNames())
输出:['0.0.127.in-addr.arpa.', '1.0.127.in-addr.arpa.']
print(IP('127.0.0.0/16').reverseNames())
输出:['0.127.in-addr.arpa.']
print(IP('127.0.0.0/15').reverseNames())
输出:['0.127.in-addr.arpa.', '1.127.in-addr.arpa.']
print(IP('128.0.0.0/8').reverseNames())
输出:['128.in-addr.arpa.']
print(IP('128.0.0.0/7').reverseNames())
输出:['128.in-addr.arpa.', '129.in-addr.arpa.']
print(IP('::1:2').reverseNames())
输出:['2.0.0.0.1.ip6.arpa.']
v46map(self) ipv4 地址和ipv6地址互相转换,如果ipv6地址不能转为ipv4 地址则会抛出异常
print(IP('192.168.1.1').v46map())
输出:::ffff:192.168.1.1
print(IP('::ffff:192.168.1.1').v46map())
输出:192.168.1.1
__contains__(self, item) 判断一个ip对象,ip字符串是否包含在一个ip段内
IP('195.185.1.1').strHex() #将ip转为16进制的字符串
输出:0xc3b90101
print(0xC3B90101 in IP('195.185.1.0/24'))
输出: True
print('127.0.0.1' in IP('127.0.0.0/24'))
输出:True
print(IP('127.0.0.0/24') in IP('127.0.0.0/25'))
输出:False
print(IP('127.0.0.0/30') in IP('127.0.0.0/29'))
输出:True
iptype(self) 返回IP类型的说明(“PRIVATE”、“RESERVED”等)
print(IP('127.0.0.1').iptype())
输出:PRIVATE
print(IP('192.168.1.1').iptype())
输出:PRIVATE
print(IP('195.185.1.2').iptype())
输出:PUBLIC
print(IP('::1').iptype())
输出:LOOPBACK
print(IP('2001:0658:022a:cafe:0200::1').iptype())
输出:ALLOCATED RIPE NCC
len(self) 返回子网的长度
print(IP('195.185.1.0/28').len())
输出:16
print(IP('195.185.1.0/24').len())
输出:256
overlaps(self, item) 检查两个ip地址段是否重叠,如果不重叠返回0,前者包含后者返回1,后者包含前者则返回-1
print(IP('192.168.0.0/23').overlaps('192.168.1.0/24'))
输出:1
print(IP('192.168.0.0/23').overlaps('192.168.1.255'))
输出:1
print(IP('192.168.0.0/23').overlaps('192.168.2.0'))
输出:0
print(IP('192.168.1.0/24').overlaps('192.168.0.0/23'))
输出:-1
prefixlen(self) 返回网络前缀
print(IP('10.0.0.0/8').prefixlen())
输出:8
strBin(self, wantprefixlen=None) 将ip对象以二进制的形式返回
print(IP('127.0.0.1').strBin())
输出:01111111000000000000000000000001
print(IP('2001:0658:022a:cafe:0200::1').strBin())
输出:00100000000000010000011001011000000000100010101011001010111111100000001000000000000000000000000000000000000000000000000000000001
strCompressed(self, wantprefixlen=None) 使用“::”符号以压缩格式返回字符串表示形式。
print(IP('127.0.0.1').strCompressed())
输出:127.0.0.1
print(IP('2001:0658:022a:cafe:0200::1').strCompressed())
输出:2001:658:22a:cafe:200::1
print(IP('ffff:ffff:ffff:ffff:ffff:f:f:fffc/127').strCompressed())
输出:ffff:ffff:ffff:ffff:ffff:f:f:fffc/127
strDec(self, wantprefixlen=None) 将ip对象转换为十进制返回
print(IP('127.0.0.1').strDec())
输出:2130706433
print(IP('2001:0658:022a:cafe:0200::1').strDec())
输出:42540616829182469433547762482097946625
strFullsize(self, wantprefixlen=None) 将压缩过的ip补全返回
print(IP('127.0.0.1').strFullsize())
输出:127.0.0.1
print(IP('2001:0658:022a:cafe:0200::1').strFullsize())
输出:2001:0658:022a:cafe:0200:0000:0000:0001
strHex(self, wantprefixlen=None) 将ip地址转为16进制的,以小写字母表示返回
print(IP('127.0.0.1').strHex())
输出:0x7f000001
print(IP('2001:0658:022a:cafe:0200::1').strHex())
输出:0x20010658022acafe0200000000000001
strNetmask(self) 将网络掩码作为字符串返回。主要用于IPv6。
print(IP('195.185.0.0/16').strNetmask())
输出:255.255.0.0
print(IP('2001:0658:022a:cafe::0/64').strNetmask())
输出:/64
strNormal(self, wantprefixlen=None) 以常用格式返回子网段
print(IP('192.168.1.0/24').strNormal(0) ) #只返回ip
输出:192.168.1.0
print(IP('192.168.1.0/24').strNormal(1)) #prefix格式
输出:192.168.1.0/24
print(IP('192.168.1.0/24').strNormal(2)) # #decimalnetmask格式
输出:192.168.1.0/255.255.255.0
print(IP('192.168.1.0/24').strNormal(3)) # lastIP格式
输出:192.168.1.0-192.168.1.255
全部自己翻译,如果有不准确的地方,还请指出,谢谢
- 本文标签: Python
- 本文链接: http://www.365codemall.com/article/20
- 版权声明: 本文由李俊杰原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权