2017-05-27 11 views
0

私はこの質問に取り組んできましたが、クリアランスを見つけることはできません。特定のネットワークを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。したがって、これは別の点ですが、議論と少し似ています。

私は両方のモジュール - ipaddressnetaddrを横断しました。どちらも似ています。サブネット化のためのジェネレータがありますが、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などに最大で分割することができます。

ありがとうございました。

答えて

0

私はこのケースを自分で解決したと思います。分けるだけ。

This message助けました。だから、私たちには、&という数字のペアがあります。サブネットのプレフィックス長を計算することができます。

コードはレポです。

関連する問題