私はこの質問に取り組んできましたが、クリアランスを見つけることはできません。特定のネットワークをPythonを使用してサブネットに分割する方法
私は2つの引数 - ネットワーク/ CIDR &を取得する必要があるPythonスクリプトを持っています。スクリプトは、指定されたネットワークを、ネットワークアドレス、ブロードキャスト、ホスト数などのサブネットの数、サブネット、および表示パラメータに分割する必要があります。
実際、私の現在のコード状態はGitHubのhereです。
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などに最大で分割することができます。
ありがとうございました。