Cross-platform network interface and IP address enumeration library
Project description
ifaddr is a small Python library that allows you to find all the Ethernet and IP addresses of the computer. It is tested on Linux, OS X, and Windows. Other BSD derivatives like OpenBSD, FreeBSD, and NetBSD should work too, but I haven’t personally tested those. Solaris/Illumos should also work.
This library is open source and released under the MIT License. It works with Python 3.7+.
You can install it with pip install ifaddr. It doesn’t need to compile anything, so there shouldn’t be any surprises. Even on Windows.
Project links:
Let’s get going!
import ifaddr
adapters = ifaddr.get_adapters()
for adapter in adapters:
print("IPs of network adapter " + adapter.nice_name)
for ip in adapter.ips:
print(" %s/%s" % (ip.ip, ip.network_prefix))
This will print:
IPs of network adapter H5321 gw Mobile Broadband Driver
IP ('fe80::9:ebdf:30ab:39a3', 0L, 17L)/64
IP 169.254.57.163/16
IPs of network adapter Intel(R) Centrino(R) Advanced-N 6205
IP ('fe80::481f:3c9d:c3f6:93f8', 0L, 12L)/64
IP 192.168.0.51/24
IPs of network adapter Intel(R) 82579LM Gigabit Network Connection
IP ('fe80::85cd:e07e:4f7a:6aa6', 0L, 11L)/64
IP 192.168.0.53/24
IPs of network adapter Software Loopback Interface 1
IP ('::1', 0L, 0L)/128
IP 127.0.0.1/8
You get both IPv4 and IPv6 addresses. The later complete with flowinfo and scope_id.
If you wish to include network interfaces that do not have a configured IP addresss, pass the include_unconfigured parameter to get_adapters(). Adapters with no configured IP addresses will have an zero-length ips property. For example:
import ifaddr
adapters = ifaddr.get_adapters(include_unconfigured=True)
for adapter in adapters:
print("IPs of network adapter " + adapter.nice_name)
if adapter.ips:
for ip in adapter.ips:
print(" %s/%s" % (ip.ip, ip.network_prefix))
else:
print(" No IPs configured")
Changelog
0.2.0
Added an option to include IP-less adapters, thanks to memory
Fixed a bug where an interface’s name was bytes, not str, on Windows
Added an implementation of netifaces.interfaces() (available through ifaddr.netifaces.interfaces())
Added type hints
Backwards incompatible/breaking changes:
Dropped Python 3.6 support
0.1.7
Fixed Python 3 compatibility in the examples, thanks to Tristan Stenner and Josef Schlehofer
Exposed network interface indexes in Adapter.index, thanks to Dmitry Tantsur
Added the license file to distributions on PyPI, thanks to Tomáš Chvátal
Fixed Illumos/Solaris compatibility based on a patch proposed by Jorge Schrauwen
Set up universal wheels, ifaddr will have both source and wheel distributions on PyPI from now on
Alternatives
Alastair Houghton develops netifaces which can do everything this library can, and more. The only drawback is that it needs to be compiled, which can make the installation difficult.
As of ifaddr 0.2.0 we implement the equivalent of netifaces.interfaces(). It’s available through ifaddr.netifaces.interfaces().
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ifaddr-0.2.0.tar.gz.
File metadata
- Download URL: ifaddr-0.2.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4
|
|
| MD5 |
b1cac02b5dc354d68dd6d853bc9565a7
|
|
| BLAKE2b-256 |
e8acfb4c578f4a3256561548cd825646680edcadb9440f3f68add95ade1eb791
|
File details
Details for the file ifaddr-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ifaddr-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
085e0305cfe6f16ab12d72e2024030f5d52674afad6911bb1eee207177b8a748
|
|
| MD5 |
95a2475cabf59fce4e38a5ef334fa985
|
|
| BLAKE2b-256 |
9c1f19ebc343cc71a7ffa78f17018535adc5cbdd87afb31d7c34874680148b32
|