This is a Python module for manipulating subnet information. It adds useful utilities to the built-in Python ipaddress library. It requires Python 3+ and supports both IPv4 and IPv6 subnets.
Create a subnet object:
from subnet import ip_network, IPv4Network, IPv6Network
# The simple way takes either IPv4 or IPv6 CIDR notation
my_subnet = ip_network('10.10.0.0/16')
# The specific type way
my_ipv4_subnet = IPv4Network('10.10.0.0/16')
my_ipv6_subnet = IPv6Network('fd3e:48fe:59b2:43ca::/64')
Divide a subnet into useful chunks (as evenly as plausible):
for subnet in my_ipv4_subnet.divide(6):
print(subnet)
for subnet in my_ipv6_subnet.divide(2):
print(subnet)
Get a random ip from a subnet:
print(my_subnet.random_ip())
It is also possible to perform various tasks from the command line directly:
$ network-divide 10.0.0.0/8 4 $ network-random-ip fd3e:48fe:59b2:43ca::/64 $ network-info 192.168.0.0/24