IP位址處理模組IPy

2022-03-14 07:22:36 字數 3877 閱讀 2815

ip位址規劃是網路設計中非常重要的乙個環節,規劃的好壞會直接影響路由協議演算法的效率,包括網路效能、可擴充套件性等方面。

在這個過程中,免不了要計算大量的ip位址,包括網段、網路掩碼、廣播位址、子網數、ip型別等

一、ip位址、網段的基本處理

ip類常見的手段包括解析名稱、ip型別、ip轉化等

in [1]: from ipy import

ipin [2]: len(ip('

192.168.0.0/16

')) #

統計該網段的ip位址個數

out[2]: 65536in [3]: ip = ip("

192.168.1.20

") #

例項化乙個ip

in [4]: ip.reversenames() #

反向解析位址格式

out[4]: ['

20.1.168.192.in-addr.arpa.']

in [5]: ip.iptype() #

私網型別

out[5]: '

private

'in [6]: ip("

8.8.8.8

").iptype() #

公網型別

out[6]: '

public

'in [7]: ip("

8.8.8.8

").int() #

轉化成整形格式

out[7]: 134744072in [9]: ip("

8.8.8.8

").strhex() #

轉化為十六進製制格式

out[9]: '

0x8080808

'in [10]: ip("

8.8.8.8

").strbin() #

轉化為二進位制格式

out[10]: '

00001000000010000000100000001000

'in [11]: print(ip(0x8080808)) #

將十六進製制轉化為ip格式

8.8.8.8

ip方法也包括網路位址的轉換,例如根據ip與掩碼生產網段的格式。

in [12]: print(ip("

192.168.1.0

").make_net("

255.255.255.0"))

192.168.1.0/24in [13]: print(ip("

192.168.1.0/255.255.255.0

",make_net=true))

192.168.1.0/24in [14]: print(ip("

192.168.1.0-192.168.1.255

",make_net=true))

192.168.1.0/24

也可以通過strnormal方法指定不同wantprefixlen引數值以定製不同輸出型別的網段,輸出型別為字串。

in [19]: ip("

192.168.1.0/24

").strnormal(0) #

無返回值

out[19]: '

192.168.1.0

'in [20]: ip("

192.168.1.0/24

").strnormal(1) #

prefix格式

out[20]: '

192.168.1.0/24

'in [21]: ip("

192.168.1.0/24

").strnormal(2) #

decimalnetmask格式

out[21]: '

192.168.1.0/255.255.255.0

'in [22]: ip("

192.168.1.0/24

").strnormal(3) #

lastip格式

out[22]: '

192.168.1.0-192.168.1.255

'

二、多網路計算方法

有時候我們想比較兩個網段是否存在包含、重疊關係,ipy就可以支援類似於資料型別的比較。

in [23]: ip("

192.168.1.0

") < ip("

192.168.1.1")

out[23]: true

in [24]: '

192.168.1.10

'in ip("

192.168.1.0/24")

out[24]: true #

ip是否包含在另乙個網段中

in [26]: ip("

192.168.1.0/24

") in ip("

192.168.0.0/16")

out[26]: true #

網段是否包含在另乙個網段中

#判斷兩個網段是否存在重疊

in [27]: ip("

192.168.0.0/23

").overlaps("

192.168.1.0/24")

out[27]: 1 #

1代表存在重疊

in [28]: ip("

192.168.0.0/23

").overlaps("

192.168.1.0")

out[28]: 1in [29]: ip("

192.168.1.0/24

").overlaps("

192.168.2.0/24")

out[29]: 0 #

0代表不存在重疊

綜合例項:根據輸入的ip或子網返回網路、掩碼、廣播、反向解析、子網數等

#

!/usr/bin/env python

#coding:utf-8

from ipy import

ipip_s = raw_input("

請輸入乙個ip或者網段:")

ips =ip(ip_s)

if len(ips) > 1:

print

"" %ips.net()

print

"子網掩碼: %s

" %ips.netmask()

print

"網路廣播位址 : %s

" %ips.broadcast()

print

"位址反向解析: %s

" %ips.reversenames()[0]

print

"網路子網數: %s

" %len(ips)

else

:

print

"ip反向解析: %s

" %ips.reversenames()[0]

print

"" %ips.strhex()

print

"" %ips.strbin()

print

"位址型別: %s

" % ips.iptype()

執行結果:

#

輸入乙個**

[root@localhost script]#

python ip.py

請輸入乙個ip或者網段:192.168.1.1ip反向解析: 1.1.168.192.in-addr.arpa.

[root@localhost script]

#python ip.py

#輸入乙個網段

[root@localhost script]#

python ip.py

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...

實用的IP位址處理模組IPy

在ip位址規劃中,涉及到計算大量的ip位址,包括網段 網路掩碼 廣播位址 子網數 ip型別等。所以我們使用ipy處理這些問題。安裝 pip install ipy 或 pip install ipy 0.81判斷通過version方法就可以區分出ipv4與ipv6。import ipy ip 10....

IPy Python中ip位址處理模組

在ip位址規劃中,涉及到計算大量的ip位址,包括網段 網路掩碼 廣播位址 子網數 ip型別等。別擔心,ipy模組拯救你。ipy模組可以很好的輔助我們高效的完成ip的規劃工作。pip install ipy 目前 conda 好像不支援 1.ipy模組包含ip類,使用它可以方便處理絕大部分格式為ipv...