0
我目前有一個非常大的IP列表,我試圖儘可能地減少IP地址。使用netaddr模塊的cidr_merge()
方法,我期待着我的清單被大大縮小。但是,它似乎沒有按預期工作。Python 3.5 netaddr沒有正確合併IP地址
例如,給出以下IP的我希望他們將被合併,如圖所示:
5.8.183.1
5.8.183.2
5.8.183.5
5.8.183.6
5.8.183.10
5.8.183.14
5.8.183.18
5.8.183.22
5.8.183.26
5.8.183.30
5.8.183.34
5.8.183.38
5.8.183.42
5.8.183.46
合併到:5.8.183.0/26
我從cidr_merge()
方法的實際結果是:
5.8.183.1/32
5.8.183.2/32
5.8.183.5/32
5.8.183.6/32
5.8.183.10/32
5.8.183.14/32
5.8.183.18/32
5.8.183.22/32
5.8.183.26/32
5.8.183.30/32
5.8.183.34/32
5.8.183.38/32
5.8.183.42/32
5.8.183.46/32
這裏是我的代碼:
from netaddr import *
try:
with open('nodes', 'r') as in_file:
dat_ips = [IPNetwork(line) for line in in_file.read().splitlines()]
dat_merged_ips = cidr_merge(dat_ips)
with open('output.txt', 'w') as out_file:
for x in dat_merged_ips:
out_file.write(str(x) + '\n')
except IOError:
print('File error detected:')