繁体   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