python運維學習之IPy模組

2021-10-08 18:09:41 字數 4383 閱讀 4524

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模組可以很好...