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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
python实现按行切分文本文件的方法
Apr 18 Python
Python实现购物车功能的方法分析
Nov 10 Python
python smtplib发送带附件邮件小程序
May 22 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
利用Python实现kNN算法的代码
Aug 16 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
Python OpenCV读取中文路径图像的方法
Jul 02 Python
python db类用法说明
Jul 07 Python
python 列表推导和生成器表达式的使用
Feb 01 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获取文件名后缀
2013/06/09 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
如何填写个人简历自我评价
2013/12/10 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
党员承诺书内容
2014/03/26 职场文书
产品销售计划书
2014/05/04 职场文书
公务员政审材料
2014/12/23 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
初一英语教学反思
2016/02/15 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers