下载以及安装:

下载地址:

 tar -zxvf IPy-0.83.tar.gz 

 cd IPy-0.83

 python setup.py install


可以用version的方法区分IPV4或者IPV6,如下面的代码,返回4就是ipv4,返回6就是IPV6.

>>> from IPy import IP>>> IP('192.0.0.0/16').version()  4>>> IP('::2').version()6>>>

通过指定的网段输出该网段的IP个数以及IP地址的清单:

>>> import tab>>> from IPy import IP>>> ip = IP('192.168.1.0/24') >>> print ip.len()256>>> for x in ip:    print x    192.168.1.0192.168.1.1192.168.1.2192.168.1.3192.168.1.4192.168.1.5192.168.1.6192.168.1.7192.168.1.8192.168.1.9192.168.1.10192.168.1.11192.168.1.12192.168.1.13 .......

下面介绍IP类的几个常见的方法,包括反向解析域名,IP类型,IP转换等。

>>> import tab>>> from IPy import IP>>> ip = IP('192.168.1.107')>>> ip.reverseNames()['107.1.168.192.in-addr.arpa.']>>> ip.iptype()                            #私有地址'PRIVATE'>>> IP('202.15.15.6').iptype()'PUBLIC'                                    #公有地址>>> IP("8.8.8.8").int()134744072                                #转化为×××格式>>> IP("8.8.8.8").strHex()'0x8080808'                                #转换成十六进制>>> IP("8.8.8.8").strBin()'00001000000010000000100000001000'       #转换成二进制             >>> print (IP(0x8080808))8.8.8.8                                #十六进制转换为IP格式>>>

IP方法也支持网络地址的转换,如下:

>>> import tab>>> from IPy import IP>>> print (IP('192.168.1.0').make_net('255.255.255.0'))192.168.1.0/24>>> print (IP('192.168.1.0/255.255.255.0',make_net=True))192.168.1.0/24>>> print (IP('192.168.1.0-192.168.1.255',make_net=True))192.168.1.0/24>>>

当然也可以反过来:

>>> import tab>>> from IPy import IP>>> IP('192.168.1.0/24').strNormal(0)'192.168.1.0'>>> IP('192.168.1.0/24').strNormal(1)'192.168.1.0/24'>>> IP('192.168.1.0/24').strNormal(2)'192.168.1.0/255.255.255.0'>>> IP('192.168.1.0/24').strNormal(3)'192.168.1.0-192.168.1.255'>>>

比较IP,返回真假:

>>> import tab>>> from IPy import IP>>> IP('192.168.1.0/24')
>> IP('192.168.1.0/24')>IP('192.168.2.0/24')False>>> '192.168.1.10' in IP('192.168.1.0/24')True>>> IP('192.168.1.0/24') in IP('192.168.0.0/16')True>>>

判断是否重叠,返回0(代表没重叠)或者1(代表有重叠):

>>> IP('192.168.0.0/23').overlaps('192.168.1.0/24')1>>> IP('192.168.1.0/24').overlaps('192.168.2.0')   0>>>

示例:根据输入的IP或者子网返回网络,掩码,广播,,反向解析,子网数,IP类型信息。

#!/usr/bin/env python# -*- coding: utf-8 -*-#2017,8,24from IPy import IP        ip_s = raw_input('Please input an IP or net-range:')        ips = IP(ip_s)if len(ips) > 1:                 print ('net:%s' % ips.net()) #输出网络地址        print ('netmask:%s' % ips.netmask()) #输出网络掩码        print ('broadcast:%s' % ips.broadcast()) #输出广播地址        print ('subnet:%s' % len(ips)) #输出网络子网数        print ('reverse address: %s' % ips.reverseNames()[0]) #输出地址的反向解析else:         print ('reverse address: %s' % ips.reverseNames()[0]) #输出地址的反向解析print ('hexadecimal:%s' % ips.strHex()) #输出十六进制print ('binary ip: %s' % ips.strBin())  #输出二进制print ('iptype :%s' % ips.iptype()) #输出地址类型,如私有,公有,换回地址

运行结果:

[root@China IP]# python IP_simple1.py Please input an IP or net-range:192.168.2.0/24net:192.168.2.0netmask:255.255.255.0broadcast:192.168.2.255subnet:256reverse address: 2.168.192.in-addr.arpa.hexadecimal:0xc0a80200binary ip: 11000000101010000000001000000000iptype :PRIVATE[root@China IP]#
[root@China IP]# python IP_simple1.py Please input an IP or net-range:192.168.2.0reverse address: 0.2.168.192.in-addr.arpa.hexadecimal:0xc0a80200binary ip: 11000000101010000000001000000000iptype :PRIVATE[root@China IP]#

总结:写代码的时候一定要分清大小写。