程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python的IPy模塊

編輯:Python


IPy模塊介紹
IPy這個強大的Python第三方包主要提供了包括網段、網絡掩碼、廣播地址、子網數、IP類型的處理等等功能。

安裝

wget https://pypi.python.org/packages/source/I/IPy/IPy-0.81.tar.gz --no-check-certificate  # 下載
tar -zxvf Ipy-0.81.tar.gz # 解壓
cd IPy-0.81
python setup.py install  # 安裝


IPy模塊使用
調用模塊
使用IPy模塊時,需要先調用模塊

from IPy import IP



定義網段

ip = IP('10.0.0.0/24')



查詢網段的IP數量
使用len()函數

ip.len()
256
for i in ip.len():  # 遍歷網段IP
    print(i)



IP地址轉換
使用reverseName()函數對IP進行反向解析

ip1 = IP('192.168.4.111')
ip1.reverseName()
'111.4.168.192.in-addr.arp



查看IP類型
使用iptype()函數查看IP類型

ip1 = IP('192.168.4.111')
ip1.iptype()
PRIVATE


將IP格式轉換為其他類型格式

ip1 = IP('192.168.4.111')
ip1.int()  # int()函數
3232236655  
ip1.strHex()  # 16進制
'0xc0a8046f'
ip1.strBin()  # 2進制
'11000000101010000000010001101111'
print(IP(0xc0a80101))  # 將16進制轉化為IP格式
192.168.1.1



判斷IP的網段

ip = IP('192.168.4.159')
書寫形式一:
print(ip.make_net(26))
192.168.4.128/26  
書寫形式二:
print(ip.make_net(255.255.225.192))
192.168.4.128/26  
print(IP('192.168.4.0-192.168.4.255',make_net=True))  #這個網段必須是子網掩碼是255.255.225.0的網段
192.168.4.0/24



網段的不同輸出格式
strNormal()輸出IP的網段的不同格式

參數:

0:輸出網段的網絡標識

1:以prefix的形式輸出網段

2:以decimalnetmask的格式輸出網段

3:以lastIP的格式輸出網段

print(IP('192.168.1.0/24').strNormal(0))  # 輸出網段的網絡標識
192.168.1.0
print(IP('192.168.2.0/26').strNormal(1))  # 輸出網段
192.168.2.0/6  # 輸出prefix格式網段
print(IP('192.168.3.0/24').strNormal(2))
192.168.2.0/255.255.255.192  # 輸出decimalnetmask格式網段
print(IP('192.168.4.0/24').strNormal(3))
192.168.2.0-192.168.2.63  # 輸出lastIP格式



判斷兩個網段是否存在包含或重疊等關系
判斷網段大小
比較的依據:比較的是網絡位,從左到右比較數值大小,能夠區分開即比較停止,非網絡位必須是0

IP("10.0.0.0/24") < IP("12.0.0.0/16")  # True 12.0.0.0/16網段大
IP("13.0.0.0/8") < IP("12.5.5.0/26")  # False 13.0.0.0/8網段大



判斷IP地址和網段是否包含於另一個網段中
**in:**判斷iIP或網段是否在另一個網段中國

"192.168.1.55" in IP("192.168.1.0/24")  # True
IP("192.168.4.64/26") in IP("192.168.4.0/24")  # True


判斷兩個網段是否有重疊

IP("192.168.4.0/26").overlaps("192.168.4.0/24")  # 1 1表示兩個網段有重疊部分
IP("10.0.0.0/26").overlaps("10.0.2.0/24")  # 0 0表示兩個網段沒有重疊部分



輸出網段的網絡地址、子網掩碼及廣播地址

ip = IP("192.168.6.0/24")
ip.net()  # IP('192.168.6.0') 
ip.netmask()  # IP('255.255.255.0')
ip.broadcast()  # IP('192.168.6.255')


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved