本文共 3703 字,大约阅读时间需要 12 分钟。
下载以及安装:
下载地址:
tar -zxvf IPy-0.83.tar.gz
cd IPy-0.83
python setup.py install
可以用version的方法区分IPV4或者IPV6,如下面的代码,返回4就是ipv4,返回6就是IPV6.
1 2 3 4 5 6 | >>> from IPy import IP >>> IP( '192.0.0.0/16' ).version() 4 >>> IP( '::2' ).version() 6 >>> |
通过指定的网段输出该网段的IP个数以及IP地址的清单:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | >>> 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.0 192.168 . 1.1 192.168 . 1.2 192.168 . 1.3 192.168 . 1.4 192.168 . 1.5 192.168 . 1.6 192.168 . 1.7 192.168 . 1.8 192.168 . 1.9 192.168 . 1.10 192.168 . 1.11 192.168 . 1.12 192.168 . 1.13 ....... |
下面介绍IP类的几个常见的方法,包括反向解析域名,IP类型,IP转换等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | >>> 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方法也支持网络地址的转换,如下:
1 2 3 4 5 6 7 8 9 | >>> 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 >>> |
当然也可以反过来:
1 2 3 4 5 6 7 8 9 10 11 | >>> 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' >>> |
1 2 3 4 5 6 7 8 9 10 11 | >>> import tab >>> from IPy import IP >>> IP( '192.168.1.0/24' )<IP( '192.168.2.0/24' ) True >>> 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 >>> |
1 2 3 4 5 | >>> 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类型信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/usr/bin/env python # -*- coding: utf-8 -*- #2017,8,24 from 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()) #输出地址类型,如私有,公有,换回地址 |
运行结果:
1 2 3 4 5 6 7 8 9 10 11 | [root@China IP] # python IP_simple1.py Please input an IP or net - range : 192.168 . 2.0 / 24 net: 192.168 . 2.0 netmask: 255.255 . 255.0 broadcast: 192.168 . 2.255 subnet: 256 reverse address: 2.168 . 192.in - addr.arpa. hexadecimal: 0xc0a80200 binary ip: 11000000101010000000001000000000 iptype :PRIVATE [root@China IP] # |
1 2 3 4 5 6 7 | [root@China IP] # python IP_simple1.py Please input an IP or net - range : 192.168 . 2.0 reverse address: 0.2 . 168.192 . in - addr.arpa. hexadecimal: 0xc0a80200 binary ip: 11000000101010000000001000000000 iptype :PRIVATE [root@China IP] # |
总结:写代码的时候一定要分清大小写。
本文转自 天道酬勤VIP 51CTO博客,原文链接:http://blog.51cto.com/tdcqvip/1958806
转载地址:http://offnx.baihongyu.com/