我一直在處理這個問題,但找不到許可。如何使用Python將指定的網絡劃分爲子網
我有一個Python腳本應該得到兩個參數 - 網絡/ CIDR &一個數字。腳本應將指定的網絡劃分爲多個部分,子網,並顯示這些子網的參數,例如網絡地址,廣播,主機數量。
其實,我目前的代碼狀態是here,在GitHub上。
我問的原因是堆棧溢出的其他主題,如this,this或this。但是他們都有前綴。我的觀點是,例如,./subnet-divider.py 200.100.33.65/26 3
,所以我應該把它分成3個子網。或者./subnet-divider.py 200.100.33.65/26 9
。所以這是一個不同的觀點,儘管稍微類似於討論。
我繞過兩個模塊 - ipaddress和netaddr。兩者都是相似的。有子網發生器,但他們有像prefix
,必要的參數,和count
,這是很好的。
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等等,以達到最大值。
謝謝。