繁体   English   中英

使用子网掩码增加 IP 地址

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM