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