簡體   English   中英

如何使用python-netaddr獲取子網和IPv4地址時的IP前綴?

[英]How to get the IP prefix while we have subnet and IPv4 address using python-netaddr?

我正在使用python-netaddr庫來處理IP地址和子網。 我閱讀了netaddrd的完整文檔: Netaddr文檔 但沒有找到解決我問題的方法。 我有一個IP地址和子網我想通過使用它們獲得該IP的前綴。 這樣我就可以打印所有進入子網的ip。

例如:

Ip Address: 192.0.2.0
Subnet Network: 255.255.255.0

It should return the prefix which is : 24

要獲得24,您可以使用以下代碼段

ip = IPNetwork('192.0.2.0/255.255.255.0')
print ip.prefixlen

但是如果你想要子網中所有地址的列表,它更容易使用:

ip = IPNetwork('192.0.2.0/255.255.255.0')
list(ip)

使用給定的Netmask,我們可以使用以下函數獲取前綴:

def getPrefix(mask):
    prefix = sum([bin(int(x)).count('1') for x in mask.split('.')])
    return prefix
def getPrefix(binary):
    prefixCount=0
    for i in (str(binary)):
        if(i == '1'):
            prefixCount+=1
    return prefixCount

如果子網轉換為二進制格式並在輸入中給出,這將返回“Prefixcount”。

子網掩碼是:255.255.255.0這是如何ic它:1。 1。 1. 0

255是所有8位都打開。 即。 全1。 並且0表示所有8位都被關閉。 如果你看一下這個子網掩碼[255.255.255.0],前三個八位字節全部變為'ON',而最后一個八位字節被'OFF'。
因此,在這種情況下,計算所有ON的八位字節,我們可以說3個八位字節:255.255.255.0 1。 1。 1 .0 8 + 8 + 8 + 0 = 24

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM