前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python:ip地址处理模块

Python:ip地址处理模块

作者头像
行 者
发布2018-03-26 15:42:20
1.5K0
发布2018-03-26 15:42:20
举报
文章被收录于专栏:运维技术迷运维技术迷

安装

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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用
    • 查看IP地址版本
      • 计算网段IP数量
        • 反向解析名称、IP类型、IP转换等
          • 网络地址的转换
            • 定制不同输出类型的网段
              • 多网络计算方法详解
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档