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')