Skip to content

Instantly share code, notes, and snippets.

@islander
Forked from toringe/cidr.py
Created June 27, 2018 04:34
Show Gist options
  • Save islander/f2408473eb79215ec6eb03ea2fc2d54d to your computer and use it in GitHub Desktop.
Save islander/f2408473eb79215ec6eb03ea2fc2d54d to your computer and use it in GitHub Desktop.
Merge CIDR blocks into super blocks if possible
#!/usr/bin/env python
#
# Example 1: All blocks in list.txt, one CIDR per line
# cat list.txt | cidr.py
#
# Example 2: Echo CIDR blocks to stdout
# echo 1.2.3.0/25 1.2.3.128/25 | cidr.py
import sys
from netaddr import *
# Read from stdin
data = sys.stdin.readlines()
if len(data) == 1:
# Input from echo
data = data[0].split()
# Create an IPSet of the CIDR blocks
# IPSet automatically runs cidr_merge
nets = IPSet(data)
# Output the superset of CIDR blocks
for cidr in nets.iter_cidrs():
print cidr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment