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网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
详解Python中的strftime()方法的使用
May 22 Python
在Django的模板中使用认证数据的方法
Jul 23 Python
Python实现的手机号归属地相关信息查询功能示例
Jun 08 Python
python八大排序算法速度实例对比
Dec 06 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
Jun 20 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
Python工程师面试题 与Python Web相关
2016/01/14 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python类的动态绑定实现原理
2020/03/21 Python
jupyter notebook清除输出方式
2020/04/10 Python
猫咪家具:CatsPlay
2018/11/03 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
简述数据库的设计过程
2015/06/22 面试题
公司财务总监岗位职责
2013/12/14 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
初中化学教学反思
2014/01/23 职场文书
吨的认识教学反思
2014/04/27 职场文书
教师自我剖析材料
2014/09/29 职场文书
MySQL数字类型自增的坑
2021/05/07 MySQL
详解python字符串驻留技术
2021/05/21 Python
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技