python ipaddress模块_Python学习笔记-IP地址处理模块Ipy
IP地址处理模块Ipy
IPy模块可以很好的辅助我们高效完成IP的规划工作。
安装IPy模块[root@kurol ~]# python36 -m easy_install -i http://pypi.douban.com/simple/ IPy
导入模块In [12]: from IPy import IP
1、IP地址、网段的基本处理
通过version区分IPv4和IPv6:In [13]: testip = ('10.0.0.0/8','::1')
In [14]: IP(testip[0]).version()
Out[14]: 4
In [15]: IP(testip[1]).version()
Out[15]: 6
通过指定的网段输出该网段的IP个数及所有IP地址清单:In [25]: testip1 = IP('192.168.1.0/24')
In [26]: print (testip1.len())
256
In [27]: for x in testip1:
...: print (x)
...:
192.168.1.0
192.168.1.1
192.168.1.2
......
IP类常用方法:In [32]: testip2 = IP('192.168.100.10')
In [33]: testip2.reverseNames() #反向解析地址格式
Out[33]: ['10.100.168.192.in-addr.arpa.']
In [34]: testip2.iptype() #返回IP类型,192.168.100.10为私有地址
Out[34]: 'PRIVATE'
In [35]: IP('8.8.8.8').iptype() #返回IP类型,8.8.8.8为共有地址
Out[35]: 'PUBLIC'
In [36]: testip2.int() #转换成整型格式
Out[36]: 3232261130
In [37]: testip2.strHex() #转换成十六进制格式
Out[37]: '0xc0a8640a'
In [38]: testip2.strBin() #转换成二进制格式
Out[38]: '11000000101010000110010000001010'
In [39]: print (IP(0xc0a8640a)) #十六进制转成IP格式
192.168.100.10
网络地址转换,根据IP与掩码生成网段格式:In [47]: print (IP('192.168.1.0').make_net('255.255.255.0'))
192.168.1.0/24
In [48]: print (IP('192.168.1.0/255.255.255.0',make_net=True))
192.168.1.0/24
In [49]: print (IP('192.168.1.0-192.168.1.255',make_net=True))
192.168.1.0/24
通过strNormal方法指定不同wantprefixlen参数值以定制不同输出类型的网段。输出类型为字符串:
wantprefixlen取值及含义:wantprefixlen=0,无返回,如192.168.1.0
wantprefixlen=1,prefix格式,如192.168.1.0/24
wantprefixlen=2,decimalnetmask格式,如192.168.1.0/255.255.255.0
wantprefixlen=3,lastIP格式,如192.168.1.0-192.168.1.255In [52]: IP('192.168.1.0/24').strNormal(wantprefixlen=0)
Out[52]: '192.168.1.0'
In [53]: IP('192.168.1.0/24').strNormal(wantprefixlen=1)
Out[53]: '192.168.1.0/24'
#省略wantprefixlen
In [54]: IP('192.168.1.0/24').strNormal(0)
Out[54]: '192.168.1.0'
In [55]: IP('192.168.1.0/24').strNormal(1)
Out[55]: '192.168.1.0/24'
In [56]: IP('192.168.1.0/24').strNormal(2)
Out[56]: '192.168.1.0/255.255.255.0'
In [57]: IP('192.168.1.0/24').strNormal(3)
Out[57]: '192.168.1.0-192.168.1.255'
2、多网络计算方法
IPy支持类似于数值型数据的比较,以帮助IP对象进行比较In [67]: IP('10.0.0.0/24') > IP('12.0.0.0/24')
Out[67]: False
In [68]: IP('10.0.0.0/24')
Out[68]: True
判断IP地址和网段是否包含于另一个网段中:In [69]: '192.168.1.100' in IP('192.168.1.0/24')
Out[69]: True
In [70]: '192.168.2.100' in IP('192.168.1.0/24')
Out[70]: False
In [71]: '192.168.1.0/24' in IP('192.168.0.0/16')
Out[71]: True
判断两个网段是否存在重叠,采用IPy提供的overlaps方法:In [74]: IP('192.168.0.0/23').overlaps('192.168.1.0/24')
Out[74]: 1 #返回1代表存在重叠
In [75]: IP('192.168.1.0/24').overlaps('192.168.2.0')
Out[75]: 0#返回0代表不存在重叠
实例:根据输入的IP或子网返回网络、掩码、广播、反向解析、子网数、IP类型等信息:[root@kurol pkg1]# vim testip.py#!/usr/bin/python
#coding:utf-8
#
from IPy import IP
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
ip_test = raw_input('请输入IP地址或网段地址:')
ips = IP(ip_test)
if len(ips) > 1:
print ('网络地址:%s' % ips.net())
print ('掩码:%s' % ips.netmask())
print ('网络广播地址:%s' % ips.broadcast())
print ('地址反向解析:%s' % ips.reverseNames())
print ('网络子网数:%s' % len(ips))
else:
print ('IP反向解析 %s' % ips.reverseNames())
print ('此IP地址转换成十六进制: %s' % ips.strHex())
print ('此IP地址转换成二进制: %s' % ips.strBin())
print ('此IP地址类型: %s' % ips.iptype())
执行结果:[root@kurol pkg1]# python testip.py
请输入IP地址或网段地址:192.168.1.0/24
网络地址:192.168.1.0
掩码:255.255.255.0
网络广播地址:192.168.1.255
地址反向解析:['1.168.192.in-addr.arpa.']
网络子网数:256
此IP地址转换成十六进制: 0xc0a80100
此IP地址转换成二进制: 11000000101010000000000100000000
此IP地址类型: PRIVATE
[root@kurol pkg1]# python testip.py
请输入IP地址或网段地址:192.168.1.1
IP反向解析 ['1.1.168.192.in-addr.arpa.']
此IP地址转换成十六进制: 0xc0a80101
此IP地址转换成二进制: 11000000101010000000000100000001
此IP地址类型: PRIVATE
python ipaddress模块_Python学习笔记-IP地址处理模块Ipy相关推荐
- Python网络编程基础学习笔记-ip地址的介绍
ip地址的介绍 1.ip地址的概念 IP地址就是标识网络中设备的一个地址,好比现实生活中的家庭地址. 2.ip地址的表现形式 通常分为ipv4 ipv6 说明: ip地址分为两类: ipv4 和 ip ...
- python3常用模块_Python学习笔记三(常用模块)
Python 学习笔记三 (常用模块) 1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称( ...
- python paramiko并发_python学习笔记9--paramiko模块、多线程、锁机制
一.paramiko模块 paramiko模块是一个遵循ssh2协议的python扩展模块,该模块可以允许使用python通过ssh协议去远程管理主机.在使用该模块前,需要手动安装,具体安装过程请百度 ...
- python lol脚本_python学习笔记系列----(四)模块
这一章主要是叙述了python模块的概念以及包的概念,还有它们的使用:收获也是大大的. 提起python文件,经常会听到3个名词,python脚本,python模块,python包.脚本的概念是从py ...
- python的init方法在哪个模块_Python学习笔记(九)——Python _init_特殊方法和模块...
一.特殊方法 特殊方法就是形如_future_\_main_这类方法的统称. 1.特殊方法 #__init__构造方法 class FooBar: def __init__(self): #构造方法, ...
- python eval 入门_Python学习笔记整理3之输入输出、python eval函数
Python学习笔记整理3之输入输出.python eval函数 来源:中文源码网 浏览: 次 日期:2018年9月2日 Python学习笔记整理3之输入输出.python eval函数 ...
- python通信信号处理_python学习笔记——信号模块signal(示例代码)
基于python学习笔记--多进程间通信--Linux信号基础的学习基础,进一步学习Python标准库中的signal模块. 尽管signal是python中的模块,但是主要针对UNIX平台(比如Li ...
- python编程计算器_Python学习笔记:用Python开发一个计算器项目
最近抽空看了下python的学习文档,发现开发工具以及资料支持对开发者相当的友好,相比之下,以前用TCL&Tk做的项目主要缺点有两个:1,开发难度大,调试手段只有靠print一种,而且语法错误 ...
- python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)
博主今天总结这段时间抽空写的一个GUI编程项目 功能是查看本地打印机队列,可选择指定队列重新打印 直接上图 UI设计包括3个区域左上方,右上方和下方列表区域 使用网格grid方法来分配位置 下面是界面 ...
最新文章
- Linux系统下活用History命令
- 把struts2的struts.xml配置文件分解成多个配置文件
- 使用uglify不能压缩的一些js语法(持续发现中)
- Console.js:彩蛋和作弊码
- uvalive4744(数论)
- QT的QGLFunctions类的使用
- Yet Another Broken Keyboard
- Ubuntu 18.04下命令安装VMware Tools
- 吴恩达作业5:正则化和dropout
- java 不同包_Java项目中不同包的命名及作用
- [转载·运维案例一]nginx日志切割及7天前的历史日志删除脚本
- 如何在 Git 里撤销(几乎)任何操作
- windows下yafu的下载及其安装
- 算法精解:C语言描述(递归)
- python 计算变量的IV值
- 软件测试开发高频面试题及参考答案(适用校招)
- mysql mariadb libs_mysql 安装 【解决】mariadb-libs is obsoleted by *** - Ctrl+CCtrl+V - ITeye博客...
- 干细胞研究最新进展(2022年4月)
- Proteus中继电器详解
- c程序语言难么,c语言难不难