[英]Increment a IP address using subnet Mask
我正在尝试根据子网掩码增加 IP。 有办法吗? 我能够使用整数增加 IP 地址,但不能使用子网掩码。 我查看了 IPAddress 模块的文档,但找不到解决方法。 有没有办法做到这一点。?
>>> a
IPv4Address('192.168.1.1')
>>> a + 256
IPv4Address('192.168.2.1')
>>>
>>>
>>>
>>> sub_incr = '0.0.1.0'
>>> a + ipaddress.IPv4Address(sub_incr)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'IPv4Address' and 'IPv4Address'
>>> ```
Is there a way to do it?
在您的情况下,您可以简单地将“网络掩码”转换为 int 并将其添加到 IP:
print(IPv4Address('192.168.1.1') + int(ipaddress.IPv4Address('0.0.1.0')))
如果您有 CIDR 表示法的网络掩码(例如 192.168.1.1/24),则可以使用简单的位移:
def increment(ip, mask):
return ip + (1 << (32 - mask))
print(increment(ipaddress.IPv4Address('192.168.1.1'), 24))
如果您有拼写的网络掩码(例如 255.255.255.0),您可以使用 IPv4Network 将其转换为 CIDR:
print(IPv4Network("192.168.1.1/255.255.255.0", strict=False).prefixlen)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.