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/24網段的所以ip清單
print
(x)ip = ip(
'192.168.1.20'
)print
(ip.reversenames())
#反向解析位址格式
>>
>
['20.1.168.192.in-addr.arpa.'
]print
(ip.iptype())
#檢視網路型別,192.168.1.20為私網型別『private』
>>
>private
ip = ip(
'124.55.15.4'
)print
(ip.iptype())
#檢視網路型別,124.55.15.4為公網型別
>>
>public
print
(ip.strbin())
#轉換成二進位制格式
>>
>
01111100001101110000111100000100
#根據ip與掩碼生產網段格式
print
(ip(
'192.168.1.0'
).make_net(
'255.255.0.0'))
>>
>
192.168
.0.0/16
print
(ip(
'192.168.1.0/255.255.0.0'
,make_net=
true))
>>
>
192.168
.0.0/16
print
(ip(
'192.168.0.0-192.168.255.255'
,make_net=
true))
>>
>
192.168
.0.0
/16
也可以通過srtnormal方法指定不同wantprefixlen引數值以定製不同輸出型別的網段。輸出型別為字串
print
(ip(
'192.168.1.0/24'
).strnormal(0)
)>>
>
192.168
.1.0
print
(ip(
'192.168.1.0/24'
).strnormal(1)
)>>
>
192.168
.1.0/24
print
(ip(
'192.168.1.0/24'
).strnormal(2)
)>>
>
192.168
.1.0
/255.255
.255
.0print
(ip(
'192.168.1.0/24'
).strnormal(3)
)>>
>
192.168
.1.0
-192.168
.1.255
wantprefixlen的取值及含義:
#判斷ip位址和網段是否包含於另乙個網段中,如下:
print
('192.168.1.100'
in ip(
'192.168.1.0/24'))
>>
>
true
print
(ip(
'192.168.1.0/24'
)in ip(
'192.168.0.0/16'))
>>
>
true
#判斷兩個網段是否存在重疊,採用ipy提供的overlaps方法
print
(ip(
'192.168.0.0/23'
).overlaps(
'192.168.1.0/24'))
>>
>
1#返回1代表存在重疊
print
(ip(
'192.168.1.0/24'
).overlaps(
'192.168.2.0/24'))
>>
>
0#返回0代表不存在重疊
根據輸入的ip或子網返回網路、掩碼、廣播、反向解析、子網數、ip型別等資訊
from ipy import ip
ip_s =
input
('please input an ip or net-range:'
)#接收使用者輸入,引數為ip位址或網段位址
ips = ip(ip_s)
iflen
(ips)
>1:
#為乙個網路位址
print
('net: %s'
% ips.net())
#輸出網路位址
print
('netmask: %s'
,ips.netmask())
#輸出網路掩碼位址
print
('broadcast: %s'
% ips.broadcast())
#輸出網路廣播位址
print
('reverse address: %s'
% ips.reversenames()[
0])#輸出位址反向解析
print
('subnet: %s'
%len
(ips)
)#輸出網路子網數
else
:#為單個ip位址
print
('reverse address: %s'
% ips.reversenames()[
0])#輸出ip反向解析
print
('hexadecimal: %s'
% ips.strhex())
#輸出16進製制位址
print
('binary ip: %s'
% ips.strbin())
#輸出二進位制位址
print
('iptype: %s'
% ips.iptype())
#輸出位址型別
====
====
====
====
=ouput==
====
====
====
====
====
please input an ip or net-
range
:192.168
.1.0/24
net:
192.168
.1.0
netmask:
%s 255.255
.255
.0broadcast:
192.168
.1.255
reverse address:
1.168
.192.in
-addr.arpa.
subnet:
256hexadecimal:
0xc0a80100
binary ip:
11000000101010000000000100000000
iptype: private
please input an ip or net-
range
:222.200
.98.147
reverse address:
147.98
.200
.222.in
-addr.arpa.
hexadecimal:
0xdec86293
binary ip:
11011110110010000110001010010011
iptype: public
Python自動化運維之IPy模組
ipy模組用於處理ipv4和ipv6位址和網路的類和工具。環境 文章所示 在python3.8,windows10,centos7.8 下測試通過。安裝 pip install ipy基本使用 輸出指定網段的ip個數及ip清單 匯入ip模組 from ipy import ip 指定網段為127.0...
python自動化運維(IPy包)
from ipy import ip ip ip 192.168.20.0 24 print ip.len for x in ip print x from ipy import ip 反向解析,檢視位址型別 ip ip 192.168.1.20 print ip.reversenames prin...
Python入門之 IPy模組
ip位址規劃是網路設計中非常重要的乙個環節,規劃的好壞會直接影響路由協議演算法的效率,包含網路效能 可擴充套件性等方面,在這個過程當中,免不了要計算大量的ip位址,包括網段 網路掩碼 廣播位址 子網數 ip型別等。python提供了乙個強大的第三方模組ipy 最新版本為v0.81。ipy模組可以很好...