我想使用netaddr
找出给定地址的子网(网络ID)的起始地址。
示例输入:192.168.1.130/26
示例输出:192.168.1.0 192.168.1.64 192.168.1.128 192.168.1.192
到目前为止,我已尝试使用此代码:
from netaddr import *
ip = IPNetwork('192.168.1.130/26')
subnets = list(ip.subnet(26))
print(subnets)
[IPNetwork('192.168.1.128/26')]
它显示正确的网络ID,但仅适用于该SPECIFIC地址,而不是所有子网的网络ID。
在这种情况下,我可以以某种方式更改此代码以向我显示所有四个网络ID(它应该能够使用任何IP /掩码)
提前谢谢。
答案 0 :(得分:1)
>>> from netaddr import *
>>>
>>> ip = IPNetwork('192.168.1.130/26')
>>> supernet = ip.supernet(24)[0]
>>> print list(supernet.subnet(26))
[IPNetwork('192.168.1.0/26'), IPNetwork('192.168.1.64/26'), IPNetwork('192.168.1.128/26'), IPNetwork('192.168.1.192/26')]