В настоящее время у меня очень большой список 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:')