Skip to content

Instantly share code, notes, and snippets.

@racheliurui
Forked from islander/cidr.py
Created September 13, 2020 11:12
Show Gist options
  • Save racheliurui/26b9097855910b9a4855b6102735115c to your computer and use it in GitHub Desktop.
Save racheliurui/26b9097855910b9a4855b6102735115c 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