簡體   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