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 相关文章推荐
Python读写Excel文件的实例
Nov 01 Python
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
python实现批量下载新浪博客的方法
Jun 15 Python
Python设计模式之门面模式简单示例
Jan 09 Python
Python的高阶函数用法实例分析
Apr 11 Python
pytorch中的transforms模块实例详解
Dec 31 Python
解决pip install psycopg2出错问题
Jul 09 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 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数组中删除元素的实现代码
2012/06/22 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
拖动一个HTML元素
2006/12/22 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
Python生成密码库功能示例
2017/05/23 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python 字典中的所有方法及用法
2020/06/10 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
英语专业学生个人求职信范文
2014/01/06 职场文书
致全体运动员广播稿
2014/02/01 职场文书
优良学风班申请材料
2014/02/13 职场文书
学雷锋演讲稿
2014/03/04 职场文书
建设工地安全标语
2014/06/07 职场文书
学术会议邀请函
2015/01/30 职场文书
投诉信格式范文
2015/07/02 职场文书
八年级语文教学反思
2016/03/03 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL