netaddr子网的网络ID

时间:2013-06-30 09:36:38

标签: python networking

我想使用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 /掩码)

提前谢谢。

1 个答案:

答案 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')]