5

python-netaddrライブラリを使用してIPアドレスとサブネットを処理しています。与えられたnetaddrdの完全なドキュメントを読みました:Netaddrドキュメント。しかし、私の問題に対する解決策は見つかりませんでした。IPアドレスとサブネットがあり、両方を使用してそのIPのプレフィックスを取得したいと思います。サブネットに入ってくるすべてのIPを印刷できるようにします。

例えば:

Ip Address: 192.0.2.0
Subnet Network: 255.255.255.0

It should return the prefix which is : 24
4

4 に答える 4

6

24 を取得するには、次のスニペットを使用できます

ip = IPNetwork('192.0.2.0/255.255.255.0')
print ip.prefixlen

ただし、サブネット内のすべてのアドレスのリストが必要な場合は、次の方法を使用する方が簡単です。

ip = IPNetwork('192.0.2.0/255.255.255.0')
list(ip)
于 2012-05-30T09:35:06.517 に答える
3

特定のネットマスクを使用して、以下の関数でプレフィックスを取得できます。

def getPrefix(mask):
    prefix = sum([bin(int(x)).count('1') for x in mask.split('.')])
    return prefix
于 2014-02-25T02:43:54.850 に答える
0
def getPrefix(binary):
    prefixCount=0
    for i in (str(binary)):
        if(i == '1'):
            prefixCount+=1
    return prefixCount

サブネットがバイナリ形式に変換され、入力で指定された場合、これは「Prefixcount」を返します。

于 2014-02-24T09:56:41.193 に答える
0

サブネットマスクは : 255.255.255.0 です。1. 1.0

255 はすべての 8 ビットがオンになります。すなわち。すべて 1。0 はすべての 8 ビットがオフになっていることを示します。このサブネットマスク [255.255.255.0] を見ると、最初の 3 オクテットがすべて「オン」になっていて、最後のオクテットが「オフ」になっています。
したがって、この場合にオンになっているすべてのオクテットを数えると、3 オクテットと言えます: 255.255.255.0 1 . 1. 1 .0 8 + 8 + 8 + 0 =24

于 2014-06-03T00:38:42.677 に答える