如何使用Python将指定网络分割为子网

2024-05-19 11:04:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在研究这个问题,但找不到许可证。在

我有一个Python脚本,它应该有两个参数-network/CIDR&a number。脚本应该将指定的网络划分为若干部分、子网,并显示这些子网的参数,如网络地址、广播、主机数量。在

实际上,我当前的代码状态是here,在GitHub上。在

我问这个问题的原因是还有其他关于堆栈溢出的主题,比如thisthis或{a4}。但它们都有前缀。我的观点是,例如,./subnet-divider.py 200.100.33.65/26 3,所以我应该把它分成3个子网。或./subnet-divider.py 200.100.33.65/26 9。所以这是一个不同的观点,虽然有点类似于所讨论的。在

我跨越了两个模块-ipaddress和{a6}。两者相似。有用于子网的生成器,但是它们有诸如prefix(必需)和{}这样的参数,这很好。在

In [22]: s.get_subnet(27, count=3)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-22-5864cbfc587d> in <module>()
----> 1 s.get_subnet(27, count=3)

/home/simple/Projects/subnet-divider/ip_splitter.py in get_subnet(self, prefix, count)
     14         """ . """

     15         for ip_network in self.get_available_ranges():
---> 16             subnets = list(ip_network.subnet(prefix, count=count))
     17             if not subnets:
     18                 continue

/usr/local/lib/python3.5/dist-packages/netaddr/ip/__init__.py in subnet(self, prefixlen, count, fmt)
   1269 
   1270         if not 1 <= count <= max_subnets:
-> 1271             raise ValueError('count outside of current IP subnet boundary!')
   1272 
   1273         base_subnet = self._module.int_to_str(self.first)

ValueError: count outside of current IP subnet boundary!

当然,没错。在

那么,我如何划分呢?为了灵活起见,我不需要前缀,但是脚本应该能够将传入的网络划分为指定的子网,3、7、10等等,直到最大

谢谢。在


Tags: inpyselfip脚本参数getprefix
1条回答
网友
1楼 · 发布于 2024-05-19 11:04:29

我想我自己解决了这个案子。只是为了分开。在

This message有帮助。所以,我们有一个配对号要除掉。我们可以计算子网的前缀长度。在

代码在回购中。在

相关问题 更多 >

    热门问题