Python模塊學習之IPy模塊
阿新 • • 發佈:2018-01-21
eat rst 3.5 3.6 最新版本 pypi org eating private 1、IPy介紹
IP地址規劃是網絡設計中非常重要的一個環節,規劃的好壞會直接影響路由協議算法的效率,包括網絡性能、可擴展性等方面,在這個過程當中,免不了要計算大量的IP地址,包括網段、網絡掩碼、廣播地址、子網數、IP類型等。
Python提供了一個強大的第三方模塊IPy,最新版本(2017-11-16)為V0.83。
Github地址
https://github.com/autocracy/python-ipy/
pypi地址
https://pypi.python.org/pypi/IPy/
IPy模塊可以很好地輔助我們高效完成IP的規劃工作。
2、IPy安裝
2.1、源碼安裝
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安裝
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版本
>>> import IPy
>>> IPy.__version__
‘0.83‘
>>>
3.2、獲取ip地址的版本信息
>>> IPy.IP("10.0.0.0/24").version()
4
>>>
>>> IPy.IP("192.168.1.1").version()
4
>>>
3.3、通過指定網段輸出該網段的ip個數和所有ip地址清單
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
ip=IPy.IP("10.8.10.0/24")
print ip.iptype()
‘‘‘
PRIVATE
‘‘‘
print IPy.IP("8.8.8.8").iptype()
‘‘‘
PUBLIC
‘‘‘
3.5、將IP地址轉換成整數
#轉換成整形
print IPy.IP("10.8.10.232").int()
‘‘‘
168299240
‘‘‘
3.6、IP地址排序
###################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、網絡地址轉換
#網絡地址轉換
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地址和網段是否包含於另一個網段中
#判斷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、網段比較
#網段比較
print "網段比較"
print IPy.IP("192.168.3.0/24")>IPy.IP("192.168.1.0/24")
‘‘‘
True
‘‘‘
3.10、判斷兩個網段是夠存在重疊
#判斷兩個網段是夠存在重疊
#返回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
‘‘‘
Python模塊學習之IPy模塊