ipaddress - IPv4/IPv6 Manipulation Library

1.0.23 · active · verified Thu Apr 09

The `ipaddress` module provides comprehensive tools for creating, manipulating, and operating on IPv4 and IPv6 addresses and networks. It is part of the Python 3 standard library (since Python 3.3) and available as a backport on PyPI for older Python versions. It simplifies common networking tasks such as IP address and network validation, subnetting, network relationship checks, and host enumeration.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to parse IP addresses and networks, check properties like version and privacy, and perform common network operations such as membership testing and subnetting using the `ipaddress` module.

import ipaddress

# Validate and parse an IP address
ipv4_addr = ipaddress.ip_address('192.168.1.1')
print(f"IPv4 Address: {ipv4_addr}, Version: {ipv4_addr.version}, Is private: {ipv4_addr.is_private}")

ipv6_addr = ipaddress.ip_address('2001:db8::1')
print(f"IPv6 Address: {ipv6_addr}, Version: {ipv6_addr.version}, Is global: {ipv6_addr.is_global}")

# Define and inspect an IP network
network = ipaddress.ip_network('192.168.1.0/24')
print(f"Network: {network}")
print(f"Number of hosts: {network.num_addresses}")
print(f"Network address: {network.network_address}")
print(f"Broadcast address: {network.broadcast_address}")

# Check if an address is in a network
host_in_network = ipaddress.ip_address('192.168.1.50')
print(f"{host_in_network} in {network}: {host_in_network in network}")

# Iterate over hosts in a network
# for host in network.hosts():
#     print(host)

# Subnetting
supernet = ipaddress.ip_network('10.0.0.0/8')
for subnet in supernet.subnets(prefixlen_diff=2):
    print(f"Subnet: {subnet}")

view raw JSON →