ip位址規劃是網路設計中非常重要的乙個環節,規劃的好壞會直接影響路由協議演算法的效率,包含網路效能、可擴充套件性等方面,在這個過程當中,免不了要計算大量的ip位址,包括網段、網路掩碼、廣播位址、子網數、ip型別等。python提供了乙個強大的第三方模組ipy(最新版本為v0.81。ipy模組可以很好地輔助我們高效完成ip的規劃工作。
wget --no-check-certificate
tar -zxvf ipy-0.81.tar.gz
cd ipy-0.81
python setup.py install
ip(
'10.0.0.0/8'
).version(
)4 #4代表ipv4型別
ip('::1/8'
).version(
)6 #6代表ipv6型別
from ipy import ip
ip = ip(
'192.168.0.0/16'
)print ip.len(
)#輸出192.168.0.0/16網段的ip個數
for x in ip: #輸出192.168.0.0/16網段的ip清單
print(x)
反向解析名稱、ip型別、ip轉換等
>> from ipy import ip
>> ip = ip(
'192.168.1.20'
)>> ip.reversenames(
)# 反向解析位址格式
['20.1.168.192.in-addr.arpa.'
]>> ip.iptype(
)# 192.168.1.20為私網型別private
>> ip(
'8.8.8.8'
).iptype(
)# 8.8.8.8為公網型別
'public'
>> ip(
'8.8.8.8'
).int(
)# 轉換成整型格式
134744072
>> ip(
'8.8.8.8'
).strhex(
)# 轉換成十六進製制格式
'0x8080808'
>> ip(
'8.8.8.8'
).strbin(
)# 轉換成二進位制格式
'00001000000010000000100000001000'
>> print(ip(0x8080808))
# 十六進製制轉成ip格式
8.8.8.8
from ipy import ip
print
(ip(
'192.168.1.0'
).make_net(
'255.255.255.0'))
192.168
.1.0/24
print
(ip(
'192.168.1.0/255.255.255.0'
. make_net=
true))
192.168
.1.0/24
print
(ip(
'192.168.1.0-192.168.1.255'
. make_net=
true))
192.168
.1.0
/24
也可以通過strnormal方法指定不同wantprefixlen引數值以定製不同輸出型別的網段。輸出型別為字串,如下:
有時候我們想比較兩個網段是否存在包含、重疊等等關係,比如同網路但不同prefixlen會認為是不相等的網段,如10.0.0.0/16不等於10.0.0.0/24,另外即使具有相同的prefixlen但處於不同的網路位址,同樣也視為不等,如10.0.0.0/16不等於192.0.0.0/16。ipy支援類似於數值型資料的比較,以幫助ip物件進行比較,如:
ip(
'10.0.0.0/24'
)< ip(
'12.0.0.0/24'
)true
'192.168.1.100'
in ip(
'192.168.1.0/24'
)true
ip('192.168.1.0/24'
)in ip(
'192.168.1.0/16'
)true
判斷兩個網段是否存在重疊,採用ipy提供的overlaps方法,如:
ip(
'192.168.1.0/23'
).overlaps(
'192.168.1.0/24')1
# 代表存在重疊
ip('192.168.1.0/24'
).overlaps(
'192.168.2.0')0
# 代表不存在重疊
python運維學習之IPy模組
from ipy import ip print ip 8.8.8.8 version 4print ip 1 version 6ip ip 192.168.1.0 24 print ip.len 輸出192.168.1.0 24網段的ip個數 for x in ip 輸出192.168.1.0 2...
Python自動化運維之IPy模組
ipy模組用於處理ipv4和ipv6位址和網路的類和工具。環境 文章所示 在python3.8,windows10,centos7.8 下測試通過。安裝 pip install ipy基本使用 輸出指定網段的ip個數及ip清單 匯入ip模組 from ipy import ip 指定網段為127.0...
IP位址處理模組IPy
安裝 pip install ipy from ipy import ip 1 ip型別 ip ip 192.168.0.0 16 返回4 2 ip位址的子網個數 print ip.len 3 反向解析位址格式 ip ip 192.168.0.0 16 print ip.reversenames 4...