原创

python中IP处理模块IPy中文api

温馨提示:
本文最后更新于 2022年11月02日,已超过 780 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

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

make_net(self, netmask) 将单个ip和给定的掩码转换为标准的格式

print(IP('127.0.0.1').make_net('255.0.0.0'))

 输出: 127.0.0.0/8

net(self) 将网络的基(第一)地址作为IP对象返回,也就是返回第一个和IP[0] 一样。

print (IP('10.0.0.0/8').net())

输出:10.0.0.0

netmask(self)  输出ip对象的网络掩码地址

print (IP('10.0.0.0/8').netmask())

输出:255.0.0.0

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.

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

全部自己翻译,如果有不准确的地方,还请指出,谢谢

正文到此结束
本文目录