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

Python模块学习之IPy模块

作者头像
py3study
发布2020-01-07 16:49:09
2.7K0
发布2020-01-07 16:49:09
举报
文章被收录于专栏:python3python3

1、IPy介绍

IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。 Python提供了一个强大的第三方模块IPy,最新版本(2017-11-16)为V0.83。

Github地址

代码语言:javascript
复制
https://github.com/autocracy/python-ipy/

pypi地址

代码语言:javascript
复制
https://pypi.python.org/pypi/IPy/

IPy模块可以很好地辅助我们高效完成IP的规划工作。

2、IPy安装

2.1、源码安装

代码语言:javascript
复制
Shell>cd /root/soft/Python
Shell>wget https://pypi.python.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63/IPy-0.83.tar.gz
Shell>tar zxvf IPy-0.83.tar.gz 
IPy-0.83/
IPy-0.83/.gitignore
IPy-0.83/AUTHORS
IPy-0.83/COPYING
IPy-0.83/ChangeLog
IPy-0.83/IPy.py
IPy-0.83/MANIFEST.in
IPy-0.83/Makefile
IPy-0.83/README
IPy-0.83/example/
IPy-0.83/example/confbuilder
IPy-0.83/example/confbuilder.py
IPy-0.83/setup.py
IPy-0.83/test/
IPy-0.83/test/test.rst
IPy-0.83/test/test_IPy.py
IPy-0.83/test/test_fuzz.py
IPy-0.83/test_doc.py
Shell>cd IPy-0.83
Shell>python2.7 setup.py install
running install
running build
running build_py
creating build
creating build/lib
copying IPy.py -> build/lib
running install_lib
copying build/lib/IPy.py -> /usr/local/python2.7/lib/python2.7/site-packages
byte-compiling /usr/local/python2.7/lib/python2.7/site-packages/IPy.py to IPy.pyc
running install_egg_info
Writing /usr/local/python2.7/lib/python2.7/site-packages/IPy-0.83-py2.7.egg-info 

2.2、pip安装

代码语言:javascript
复制
Shell>pip2.7 install IPy
Collecting IPy
  Downloading IPy-0.83.tar.gz
Installing collected packages: IPy
  Running setup.py install for IPy ... done
Successfully installed IPy-0.83

3、IPy实战

3.1、获取IPy版本

代码语言:javascript
复制
>>> import IPy
>>> IPy.__version__
'0.83'
>>>

3.2、获取ip地址的版本信息

代码语言:javascript
复制
>>> IPy.IP("10.0.0.0/24").version()
4
>>>
>>> IPy.IP("192.168.1.1").version()
4
>>>

3.3、通过指定网段输出该网段的ip个数和所有ip地址清单

代码语言:javascript
复制
ip=IPy.IP("10.8.10.0/24")
print ip,type(ip)
'''
10.8.10.0/24 <class 'IPy.IP'>
'''
print ip.len()
'''
256
'''

for i in ip:
    print i 

'''
10.8.10.0
10.8.10.1
10.8.10.2
10.8.10.3
10.8.10.4
.....
10.8.10.253
10.8.10.254
10.8.10.255
'''

3.4、查看指定的ip是私有ip还是公网ip

代码语言:javascript
复制
ip=IPy.IP("10.8.10.0/24")
print ip.iptype()
'''
PRIVATE
'''

print IPy.IP("8.8.8.8").iptype()
'''
PUBLIC
'''

3.5、将IP地址转换成整数

代码语言:javascript
复制
#转换成×××
print IPy.IP("10.8.10.232").int()
'''
168299240
'''

3.6、IP地址排序

代码语言:javascript
复制
###################ip地址排序############
L=['10.8.1.1','10.7.1.2','10.8.10.254','10.1.1.1']
L1=sorted(L,key=lambda x:IPy.IP(x).int())
for i in L1:
    print i
'''
10.1.1.1
10.7.1.2
10.8.1.1
10.8.10.254
'''
###################ip地址排序############

3.7、网络地址转换

代码语言:javascript
复制
#网络地址转换
print IPy.IP("192.168.0.0").make_net("255.255.254.0")
'''
192.168.0.0/23
'''

print IPy.IP("192.168.0.0/255.255.254.0",make_net=True)
'''
192.168.0.0/23
'''

print IPy.IP("192.168.0.0-192.168.1.255",make_net=True)
'''
192.168.0.0/23
'''

#Convert address to string
print "--"
print IPy.IP("192.168.0.0/24").strNormal(0),type(IPy.IP("192.168.0.0/24").strNormal(0))
print IPy.IP("192.168.0.0/24").strNormal(1)
print IPy.IP("192.168.0.0/24").strNormal(2)
print IPy.IP("192.168.0.0/24").strNormal(3)
print "---"
'''
--
192.168.0.0 <type 'str'>
192.168.0.0/24
192.168.0.0/255.255.255.0
192.168.0.0-192.168.0.255
---
'''

3.8、判断IP地址和网段是否包含于另一个网段中

代码语言:javascript
复制
#判断IP地址和网段是否包含于另一个网段中
print "判断IP地址和网段是否包含于另一个网段中"
print "192.168.1.22" in IPy.IP("192.168.1.0/24")
'''
True
'''
print "192.168.2.22" in IPy.IP("192.168.1.0/24")
'''
False
'''

3.9、网段比较

代码语言:javascript
复制
#网段比较
print "网段比较"
print IPy.IP("192.168.3.0/24")>IPy.IP("192.168.1.0/24")
'''
True
'''

3.10、判断两个网段是够存在重叠

代码语言:javascript
复制
#判断两个网段是够存在重叠
#返回0 代表不存在重叠
#返回1 代表存在重叠
print IPy.IP("192.168.3.0/24").overlaps("192.168.4.0/24")
'''
0
'''

print IPy.IP("192.168.2.0/23").overlaps("192.168.3.0/24")
'''
1
'''
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、IPy介绍
  • 2、IPy安装
    • 2.1、源码安装
      • 2.2、pip安装
      • 3、IPy实战
        • 3.1、获取IPy版本
          • 3.2、获取ip地址的版本信息
            • 3.3、通过指定网段输出该网段的ip个数和所有ip地址清单
              • 3.4、查看指定的ip是私有ip还是公网ip
                • 3.5、将IP地址转换成整数
                  • 3.6、IP地址排序
                    • 3.7、网络地址转换
                      • 3.8、判断IP地址和网段是否包含于另一个网段中
                        • 3.9、网段比较
                          • 3.10、判断两个网段是够存在重叠
                          相关产品与服务
                          NAT 网关
                          NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档