通过子网掩码查找 ip 范围

finding ip range via subnet mask

假设我的本地 IP 是 10.212.97.23,我的子网掩码是 255.255.254.0

据此,我与 10.212.96.* 在同一子网中,CIDR 为 10.212.96.0/23

所以我的问题是:是否有任何 python 库可以获取本地 ip 和子网掩码并计算 CIDR 值?我检查了 netaddr 库,但找不到此功能

可以使用以下函数手动计算 CIDR 中的基本计数,而无需使用任何库:

>>> netmask = "255.255.254.0"
>>> sum([bin(int(x)).count("1") for x in netmask.split(".")])
23

如果有帮助请告诉我。

如果你想用模块来做,ipaddress 模块可以提供帮助:

❯ python3
>>> import ipaddress
>>> ipaddress.IPv4Network("10.212.97.23/255.255.254.0", strict=False).prefixlen
23

文档here.