时间:2021-05-22
安装
先下载源码,地址:ps://pypi.python.org/pypi/IPy/">https://pypi.python.org/pypi/IPy/ ,然后解压后使用命令python setup.py install安装。
使用
1、显示IP类型
>>> IP('192.168.1.1').version() 4 >>> IP('::1').version() 6类似如上所示,通过version方法可以的判断输入的IP是IPv4还是IPv6 。
2、网段计算输出
代码:
from IPy import IPip=IP('192.168.0.0/28')print ip.len()for x in ip: print xprint ip.strNormal(0)print ip.strNormal(1)print ip.strNormal(2)print ip.strNormal(3)len()方法可以计算网段的IP个数。
strNormal()方法指定不同wantprefixlen参数可以定制不同类型的输出。上面输出类似如下:
16192.168.0.0192.168.0.1192.168.0.2192.168.0.3......192.168.0.15192.168.0.0192.168.0.0/28192.168.0.0/255.255.255.240192.168.0.0-192.168.0.153、格式转换
实例介绍几个常用方法,包括方向解析名称、IP类型、IP进制转换、网络地址网段地址转换。
ip=IP('192.168.0.1')print ip.reverseNames() #反向解析地址格式print ip.iptype() #显示IP地址类型,私有还是公有ip=IP('8.8.8.8')print ip.iptype()print ip.int() #转换成整型格式print ip.strHex() #转换成十六进制格式print ip.strBin() #转换成二进制格式#网络地址、网段地址格式转换print (IP('192.168.1.0').make_net('255.255.255.0'))print (IP('192.168.1.0/255.255.255.0',make_net=True))print (IP('192.168.1.0-192.168.1.255',make_net=True))4、地址比较
判断IP地址和网段是否包含于另一个网段中,如下:
>>> '192.168.1.1' in IP('192.168.1.0/24')True>>> IP('192.168.1.0/24') in IP('192.168.0.0/16')True判断两个网段是否存在重叠,如下:
>>> 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其中1表示存在重叠,0表示不存在重叠。
举例
代码:
#coding:utf-8from IPy import IPip_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('reverse address: %s' % ips.reverseNames()[0]) print('subnet: %s' % len(ips))else: #单个地址 print('reverse address: %s' % ips.reverseNames()[0])print('hexadecimal: %s' % ips.strHex())print('binary: %s' % ips.strBin())print('iptype: %s' % ips.iptype())运行结果:
C:\Users\admin\workspace\zhangnq>python IPy_test2.pyplease input an IP or net-range: 192.168.1.1reverse address: 1.1.168.192.in-addr.arpa.hexadecimal: 0xc0a80101binary: 11000000101010000000000100000001iptype: PRIVATEC:\Users\admin\workspace\zhangnq>python IPy_test2.pyplease input an IP or net-range: 8.8.8.8reverse address: 8.8.8.8.in-addr.arpa.hexadecimal: 0x8080808binary: 00001000000010000000100000001000iptype: PUBLICC:\Users\admin\workspace\zhangnq>python IPy_test2.pyplease input an IP or net-range: 192.168.1.0/28net: 192.168.1.0netmask: 255.255.255.240broadcast: 192.168.1.15reverse address: 0.1.168.192.in-addr.arpa.subnet: 16hexadecimal: 0xc0a80100binary: 11000000101010000000000100000000iptype: PRIVATEipy模块用法
一个自动识别IP地址、子网、方向解析、IP类型等信息的脚本
#!/usr/bin/env python# -*- coding: utf-8 -*-def ip(): try: from IPy import IP ###加载模块 ip_s = raw_input('请输入IP地址或者网段地址:' )###输入一个IP地址或者网段 ips = IP(ip_s) #定义元素 if len(ips) > 1: #如果len出来的数字大于1,那么就是一个网段 print('网络地址: %s' % ips.net()) print('子网掩码: %s' % ips.netmask()) print('网络广播地址: %s' % ips.reverseNames() [0]) print('网络子网数: %s' % len(ips)) else: ###否则就是一个地址 print('IP反向解析: %s' % ips.reverseNames() [0]) print('十六进制地址: %s' % ips.strHex()) print('二进制地址: %s' % ips.strBin()) print('地址类型: %s' % ips.iptype()) print time.strftime("%Y-%m-%d %H:%M:%S") #code except Exception, e: logging.info("error:" + str(e) + "\n" + traceback.format_exc()) print traceback.format_exc() finally: pass运行效果:
[root@mylinuxer python]# 192.168.1.0/24-bash: 192.168.1.0/24: No such file or directory[root@mylinuxer python]# python python.py请输入IP地址或者网段地址: 192.168.1.0/24网络地址: 192.168.1.0子网掩码: 255.255.255.0网络广播地址: 1.168.192.in-addr.arpa.网络子网数: 256[root@mylinuxer python]# python python.py请输入IP地址或者网段地址: 192.168.1.1IP反向解析: 1.1.168.192.in-addr.arpa.十六进制地址: 0xc0a80101二进制地址: 11000000101010000000000100000001地址类型: PRIVATE[root@mylinuxer python]# python python.py请输入IP地址或者网段地址: 116.213.249.211IP反向解析: 211.249.213.116.in-addr.arpa.十六进制地址: 0x74d5f9d3二进制地址: 01110100110101011111100111010011地址类型: PUBLIC总结
以上所述是小编给大家介绍的Python中IP地址处理IPy模块的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
实用的IP地址处理模块IPy在IP地址规划中,涉及到计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等别担心,Ipy模块拯救你。Ipy模块可以
python的IPy模块虽然可以实现一些ip地址的判断,但是不是很完美,有些场景根本判断不出来,还会抛出异常,比如一个地址范围和一个ip/掩码,这种不同类型就无
本文实例讲述了python循环监控远程端口的方法。分享给大家供大家参考。具体如下:在ip.txt中每行一个ip地址和端口号,代码可循环监控这些ip地址的指定端口
python中自带了处理python的模块,使用时候直接importjson即可。使用loads方法即可将json字符串转换成python对象,对应关系如下:J
发现问题Python中的urllib模块用来处理url相关的操作,unquote方法对应javascript中的urldecode方法,它对url进行解码,把类