实用的IP地址处理模块IPy
IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、ip类型等;python提供了一个比较强大的第三方模块IPy
以下是IPy模块的安装:
1 wget https://pypi.python.org/packages/source/I/IPy/IPy-0.81.tar.gz --no-check-certificate 2 tar -xf IPy-0.81.tar.gz 3 cd IPy-0.81 4 python setup.py install
1、IP地址、网段的基本处理
1 >>> from IPy import IP 2 >>> IP('10.0.0.0/8').version() 3 4 #4代表IPv4类型 4 >>> IP('::1').version() 5 6 #6代表IPv6类型
通过指定的网段输出该网段的IP个数及所有IP地址清单
from IPy import IP ip = IP('192.168.0.0/16') print = ip.len() #输出192.168.0.0/16网段的IP个数 for i in ip: #输出192.168.0.0/16网段的所有IP列表 print i
根据输入的ip或子网返回网络、掩码、广播、反向解析、子网数、ip类型等信息
1 #!/usr/bin/env python 2 #coding=utf-8 3 4 from IPy import IP 5 ip_s = raw_input('Please input an IP or net-range: ') #接收用户输入,参数为IP地址或者网段地址 6 ips = IP(ip_s) 7 if len(ips) > 1: #为一个网络地址 8 print 'net: %s' % ips.net() #输出网络地址 9 print 'netmask: %s' % ips.netmask() #输出网络掩码地址 10 print 'broadcast: %s' % ips.broadcast() #输出网络广播地址 11 print 'reverse address: %s' % ips.reverseNames()[0] #输出地址反向解析 12 print 'subnet: %s' % len(ips) #输出网络子网数 13 else: 14 print 'reverse address: %s' % ips.reverseNames()[0] #输出IP反向解析 15 16 print 'hexadecimal: %s' % ips.strHex() #输出十六进制地址 17 print 'binary ip: %s' % ips.strBin() #输出二进制地址 18 print 'iptype: %s' % ips.iptype() #输出地址类型,如PRIVATE、PUBLIC、LOOPBACK