Python中IP地址处理IPy模块的方法


Posted in Python onAugust 16, 2019

安装

先下载源码,地址: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模块的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
跟老齐学Python之变量和参数
Oct 10 Python
Python操作CouchDB数据库简单示例
Mar 10 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
python字符串连接方法分析
Apr 12 Python
Python pandas常用函数详解
Feb 07 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
基于Python实现流星雨效果的绘制
Mar 18 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
Aug 16 #Python
Pyinstaller 打包exe教程及问题解决
Aug 16 #Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 #Python
Python Web框架之Django框架文件上传功能详解
Aug 16 #Python
基于 Django 的手机管理系统实现过程详解
Aug 16 #Python
python创建与遍历List二维列表的方法
Aug 16 #Python
python每天定时运行某程序代码
Aug 16 #Python
You might like
PHP计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
ET Mall东森购物网:东森严选
2017/03/06 全球购物
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
中药专业大学生医药工作求职信
2013/10/25 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
社区务虚会发言材料
2014/10/20 职场文书
平安建设汇报材料
2014/12/29 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis