安装
先下载源码,地址: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 IP ip=IP('192.168.0.0/28') print ip.len() for x in ip: print x print ip.strNormal(0) print ip.strNormal(1) print ip.strNormal(2) print ip.strNormal(3)
len()方法可以计算网段的IP个数。
strNormal()方法指定不同wantprefixlen参数可以定制不同类型的输出。上面输出类似如下:
16 192.168.0.0 192.168.0.1 192.168.0.2 192.168.0.3 ...... 192.168.0.15 192.168.0.0 192.168.0.0/28 192.168.0.0/255.255.255.240 192.168.0.0-192.168.0.15
3、格式转换
实例介绍几个常用方法,包括方向解析名称、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-8 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('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.py please input an IP or net-range: 192.168.1.1 reverse address: 1.1.168.192.in-addr.arpa. hexadecimal: 0xc0a80101 binary: 11000000101010000000000100000001 iptype: PRIVATE C:\Users\admin\workspace\zhangnq>python IPy_test2.py please input an IP or net-range: 8.8.8.8 reverse address: 8.8.8.8.in-addr.arpa. hexadecimal: 0x8080808 binary: 00001000000010000000100000001000 iptype: PUBLIC C:\Users\admin\workspace\zhangnq>python IPy_test2.py please input an IP or net-range: 192.168.1.0/28 net: 192.168.1.0 netmask: 255.255.255.240 broadcast: 192.168.1.15 reverse address: 0.1.168.192.in-addr.arpa. subnet: 16 hexadecimal: 0xc0a80100 binary: 11000000101010000000000100000000 iptype: PRIVATE
ipy模块用法
一个自动识别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.1 IP反向解析: 1.1.168.192.in-addr.arpa. 十六进制地址: 0xc0a80101 二进制地址: 11000000101010000000000100000001 地址类型: PRIVATE [root@mylinuxer python]# python python.py 请输入IP地址或者网段地址: 116.213.249.211 IP反向解析: 211.249.213.116.in-addr.arpa. 十六进制地址: 0x74d5f9d3 二进制地址: 01110100110101011111100111010011 地址类型: PUBLIC
总结
以上所述是小编给大家介绍的Python中IP地址处理IPy模块的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。