Python:ip地址处理模块
时间:2022-05-05
本文章向大家介绍Python:ip地址处理模块,主要内容包括安装、使用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
安装
1.先下载源码,地址:https://pypi.python.org/pypi/IPy/
,然后解压后使用命令python setup.py install
安装。
2.或者直接使用pip install ipy
进行安装
使用
查看IP地址版本
>>> IPy.IP('192.168.1.1').version()
4
>>> IPy.IP('::1').version()
6
计算网段IP数量
#!/usr/bin/env python
#coding:utf-8
import IPy
ip = IPy.IP('192.168.0.0/28')
# len()方法可以计算网段的IP个数
print ip.len()
for i in ip:
print i
# 结果
[root@sg data]# python ip.py
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15
反向解析名称、IP类型、IP转换等
>>> ip = IPy.IP('192.168.1.1')
>>> ip.reverseName() # 反向解析
'1.1.168.192.in-addr.arpa.'
>>> ip.iptype() # ip类型-私网ip
'PRIVATE'
>>> IPy.IP('8.8.8.8').iptype() # ip类型-公网ip
'PUBLIC'
>>> IPy.IP('8.8.8.8').int() # 转换为整型格式
134744072
>>> IPy.IP('8.8.8.8').strHex() # 转换为十六进制格式
'0x8080808'
>>> IPy.IP('8.8.8.8').strBin() # 转换成二进制格式
'00001000000010000000100000001000'
>>> print IPy.IP('0x8080808') # 十六进制转换为IP格式
8.8.8.8
>>> print IPy.IP(134744072) # 整型格式转换为IP格式
8.8.8.8
网络地址的转换
>>> print (IPy.IP('192.168.1.0').make_net('255.255.255.0'))
192.168.1.0/24
>>> print (IPy.IP('192.168.1.0/255.255.255.0',make_net=True))
192.168.1.0/24
>>> print IPy.IP('192.168.1.0-192.168.1.255',make_net=True)
192.168.1.0/24
定制不同输出类型的网段
通过strNormal方法指定不同wantprefixlen参数值以定制不同输出类型的网段,输出类型为字符串.
>>> IPy.IP('192.168.1.0/24').strNormal(0)
'192.168.1.0' # 无返回
>>> IPy.IP('192.168.1.0/24').strNormal(1)
'192.168.1.0/24' # prefix格式
>>> IPy.IP('192.168.1.0/24').strNormal(2)
'192.168.1.0/255.255.255.0' # decimalnetmask格式
>>> IPy.IP('192.168.1.0/24').strNormal(3)
'192.168.1.0-192.168.1.255' # lastIP格式
多网络计算方法详解
比较两个网段是否存在包含、重叠等关系,比如同网络但不同prefixlen会认为是不相等的网段,如10.0.0.0/16不等于10.0.0.0/24,另外即使具有相同的prefixlen但处于不同的网络地址,同样也视为不相等,如10.0.0.0/16不等于192.0.0.0/16。IPy支持类似于数值型数据的比较,以帮助IP对象进行比较
>>> IPy.IP('10.0.0.0/24') < IPy.IP('12.0.0.0/24') # 比较IP大小
True
>>> '192.168.1.110' in IPy.IP('192.168.1.0/24') # 判断IP地址和网段是否包含于另一个网段中
True
>>> '192.168.1.110' in IPy.IP('192.168.1.0/32')
False
>>> IPy.IP('192.168.1.0/24') in IPy.IP('192.168.0.0/16')
True
>>> IPy.IP('192.168.0.0/23').overlaps('192.168.1.0/24') # 判断两个网段是否存在重叠(overlaps方法)
1
>>> IPy.IP('192.168.0.0/24').overlaps('192.168.1.0/24')
0
- PHP-数组
- hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)
- 日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
- golang使用sort接口实现排序示例
- hdu----(5056)Boring count(贪心)
- hdu----(5055)Bob and math problem(贪心)
- hadoop3.0 Yarn支持网络资源:network原理设计文档说明【中文】
- PHP-超级全局变量
- 日志分析实战之清洗日志小实例5:实现获取不能访问url
- CentOS安装Redis、PHPredis扩展
- 日志分析实战之清洗日志小实例4:统计网站相关信息
- PHP-数组排序
- hdu---(3555)Bomb(数位dp(入门))
- PHP-循环
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法