0

Python 用の ipcalc モジュール ( ipcalc ) の結果に疑問を持っています (netaddr の方が良い選択かもしれません)。

192.168.1.25/30例として挙げてみましょう。バイナリでは、最後のオクテットは00011001 AND 11111100 = 00011000であるため192.168.1.24、ネットワーク ID と範囲として取得します192.168.1.24 - 192.168.1.27

指定したときにipcalcを使用する

subnet = ipcalc.Network('192.168.1.25/30')
for x in subnet: print x

出力は

192.168.1.25
192.168.1.26
192.168.1.27
192.168.1.28

矛盾を理解していません。CIDR 表記を使用する場合、192.168.1.24/30192.168.1.25/30(または.26/30または.27/30) の両方を指定すると、同じサブネットを参照しているようです。

あれは正しいですか?これは ipcalc モジュールの単なるバグですか?

4

2 に答える 2

2

現時点で未解決のバグがあります: IP + ネットマスクをネットワーク オブジェクトに解決する方法がありません

そして、問題を議論する以前のバグレポート:奇妙なサブネット計算


networkただし、IP からネットワーク アドレスを取得するために呼び出される関数も追加されています。マニュアルから:

>>> localnet = Network('127.128.99.3/8')
>>> print localnet.network()
127.0.0.0

マニュアルでは、コンストラクターはネットワーク内の IP ではなく、ネットワーク アドレスNetworkを最初の引数として使用する必要があると具体的に述べています。あなたが私に尋ねると、かなり混乱します(特に、上記のコードブロックがその条件を破っているため). モジュールを使用する前に、少なくともモジュールのコードを読んでください。

于 2013-01-15T07:52:43.503 に答える