Python (Scripting) - Getting Started with ipaddress

by
Jeremy Canfield |
Updated: June 01 2025
| Python (Scripting) articles
socket.gethostbyname can be used to get the primary IP address for a hostname.
import socket
print(socket.gethostbyname("server1.example.com"))
socket.gethostname() can be used to return the hostname of localhost so you can combine socket.gethostbyname and socket.gethostname() to get the primary IP address of localhost.
import socket
print(socket.gethostbyname(socket.gethostname()))
The ipaddress module can be used to do something with IP Addresses, Subnet Masks, Default Gateway, Broadcast Address, and so on.
#!/usr/bin/python3
import ipaddress
network = ipaddress.IPv4Network('10.0.0.20/255.255.255.0', strict=False)
print(f"network = {network}")
print(f"network.broadcast_address = {network.broadcast_address}")
print(f"network.compressed = {network.compressed}")
print(f"network.exploded = {network.exploded}")
print(f"network.hostmask = {network.hostmask}")
print(f"network.max_prefixlen = {network.max_prefixlen}")
print(f"network.is_link_local = {network.is_link_local}")
print(f"network.is_loopback = {network.is_loopback}")
print(f"network.is_multicast = {network.is_multicast}")
print(f"network.is_private = {network.is_private}")
print(f"network.is_reserved = {network.is_reserved}")
print(f"network.is_unspecified = {network.is_unspecified}")
print(f"network.netmask = {network.netmask}")
print(f"network.network_address = {network.network_address}")
print(f"network.num_addresses = {network.num_addresses}")
print(f"network.prefixlen = {network.prefixlen}")
print(f"network.version = {network.version}")
print(f"network.with_hostmask = {network.with_hostmask}")
print(f"network.with_netmask = {network.with_netmask}")
print(f"network.with_prefixlen = {network.with_prefixlen}")
Which should return the following.
network = 10.0.0.0/24
network.broadcast_address = 10.0.0.255
network.compressed = 10.0.0.0/24
network.exploded = 10.0.0.0/24
network.hostmask = 0.0.0.255
network.max_prefixlen = 32
network.is_link_local = False
network.is_loopback = False
network.is_multicast = False
network.is_private = True
network.is_reserved = False
network.is_unspecified = False
network.netmask = 255.255.255.0
network.network_address = 10.0.0.0
network.num_addresses = 256
network.prefixlen = 24
network.version = 4
network.with_hostmask = 10.0.0.0/0.0.0.255
network.with_netmask = 10.0.0.0/255.255.255.0
network.with_prefixlen = 10.0.0.0/24
Did you find this article helpful?
If so, consider buying me a coffee over at