paragbaxi paragbaxi - 5 months ago 49
Python Question

List of IP addresses in Python to a list of CIDR

How do I convert a list of IP addresses to a list of CIDRs? Google's ipaddr-py library has a method called summarize_address_range(first, last) that converts two IP addresses (start & finish) to a CIDR list. However, it cannot handle a list of IP addresses.

Example:
>>> list_of_ips = ['10.0.0.0', '10.0.0.1', '10.0.0.2', '10.0.0.3', '10.0.0.5']
>>> convert_to_cidr(list_of_ips)
['10.0.0.0/30','10.0.0.5/32']

Answer

You can do it in one line using netaddr:

cidrs = netaddr.ip_range_to_cidrs(ip_start, ip_end)