Добавлена суммаризация по маске

master
FiliN 2 years ago
parent 2c57d41527
commit d8edd240a2
  1. 7
      README.md
  2. 5
      subnets.py

@ -0,0 +1,7 @@
**У становка зависимостей**
pip install ipaddress argparse
**Получение списка IP адресов с сумаризацией до /24**
wget -q --show-progress -nv -O - https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv | iconv -f cp1251 -t utf-8 | grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(/3[0-2]|/[1-2][0-9]|/[0-9])?' | ./subnets.py -s24

@ -5,6 +5,7 @@ import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-t', '--test', action='store_const', const=True, help='Тестовый режим')
parser.add_argument('-s', '--summask', type=int, help='Суммаризация по маске')
args = parser.parse_args()
def read_ips():
@ -15,6 +16,10 @@ def read_ips():
if ipaddress.ip_network(line) or ipaddress.ip_address(line):
prefix = ipaddress.ip_network(line).network_address.compressed
prefixlen = ipaddress.ip_network(line).prefixlen
if args.summask and prefixlen > args.summask:
supernet = ipaddress.ip_network(prefix,prefixlen).supernet(new_prefix=args.summask)
prefix = supernet.network_address.compressed
prefixlen = supernet.prefixlen
prefixes[prefix] = prefixlen
except ValueError:
continue #bad subnet address

Loading…
Cancel
Save