Skip to content

Instantly share code, notes, and snippets.

@Habetdin
Last active March 19, 2022 23:27
Show Gist options
  • Save Habetdin/71767ebb3656b4b28690bf3d69350562 to your computer and use it in GitHub Desktop.
Save Habetdin/71767ebb3656b4b28690bf3d69350562 to your computer and use it in GitHub Desktop.
Python script to minimize list of IPv4/IPv6 networks
#!/usr/bin/env python3
import ipaddress
import sys
source = []
result = []
for line in sys.stdin.readlines():
source.extend(ipaddress.ip_network(net) for net in line.split())
src4 = []
src6 = []
for net in source:
if net.version == 4:
src4.append(net)
else:
src6.append(net)
result.extend(ipaddress.collapse_addresses(src4))
result.extend(ipaddress.collapse_addresses(src6))
sys.stderr.write('Collapsed {} networks into {}\n'.format(len(source), len(result)))
for net in result:
sys.stdout.write('{}\n'.format(net))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment