Display addresses assigned to network interfaces using Python script.

Create a Python script using psutil package to extract system information and rich to pretty-print results.

#!/usr/bin/env python3
# Display IP addresses

import socket
import psutil

from rich import print

net_if_stats = psutil.net_if_stats()

previous_interface = ""

for interface, snicaddrs in psutil.net_if_addrs().items():
    for snicaddr in snicaddrs:
        if snicaddr.family in [socket.AF_INET, socket.AF_INET6]:
            if(previous_interface != interface):
                if net_if_stats[interface].isup == True:
                    interface_color = "green"
                else:
                    interface_color = "red"
                print()
                print("[bold %s]%s" % (interface_color, interface))
            print("  [italic white]%-8s [deep_sky_blue1]%s\n           [deep_sky_blue4]%s" % (str(snicaddr.family).split(';.';)[-1], snicaddr.address, snicaddr.netmask))
            previous_interface = interface

Execute Python script to display system information.

$ ips.py 

lo
  AF_INET  127.0.0.1
           255.0.0.0
  AF_INET6 ::1
           ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

eno1
  AF_INET  10.10.10.254
           255.255.0.0

virbr0
  AF_INET  192.168.122.1
           255.255.255.0

docker_gwbridge
  AF_INET  172.18.0.1
           255.255.0.0

br-55e2ff3280e8
  AF_INET  172.19.0.1
           255.255.0.0

docker0
  AF_INET  172.17.0.1
           255.255.0.0
  AF_INET6 fe80::42:c4ff:fe06:6b6f%docker0
           ffff:ffff:ffff:ffff::

br-7548b68c58a2
  AF_INET  172.20.0.1
           255.255.0.0

vboxnet0
  AF_INET  1.2.3.1
           255.255.255.0
  AF_INET6 fe80::800:27ff:fe00:0%vboxnet0
           ffff:ffff:ffff:ffff::

vboxnet4
  AF_INET  172.16.0.1
           255.255.255.0
  AF_INET6 fe80::800:27ff:fe00:4%vboxnet4
           ffff:ffff:ffff:ffff::

br-f8aa0e474ef0
  AF_INET  172.21.0.1
           255.255.0.0
  AF_INET6 fe80::42:5dff:fe72:af9a%br-f8aa0e474ef0
           ffff:ffff:ffff:ffff::

veth13bc976
  AF_INET6 fe80::545d:c8ff:fe52:dfb4%veth13bc976
           ffff:ffff:ffff:ffff::

veth2d3a932
  AF_INET6 fe80::e87a:4aff:feec:2920%veth2d3a932
           ffff:ffff:ffff:ffff::

veth5f0620b
  AF_INET6 fe80::e07c:e0ff:fe55:77f2%veth5f0620b
           ffff:ffff:ffff:ffff::

Compare it with system utilities.

$ ip -color --brief addr
lo               UNKNOWN        127.0.0.1/8 ::1/128 
eno1             UP             10.10.10.254/16 
virbr0           DOWN           192.168.122.1/24 
docker_gwbridge  DOWN           172.18.0.1/16 
br-55e2ff3280e8  DOWN           172.19.0.1/16 
docker0          UP             172.17.0.1/16 fe80::42:c4ff:fe06:6b6f/64 
br-7548b68c58a2  DOWN           172.20.0.1/16 
vboxnet0         DOWN           1.2.3.1/24 fe80::800:27ff:fe00:0/64 
vboxnet1         DOWN           
vboxnet2         DOWN           
vboxnet3         DOWN           
vboxnet4         DOWN           172.16.0.1/24 fe80::800:27ff:fe00:4/64 
vboxnet5         DOWN           
br-f8aa0e474ef0  UP             172.21.0.1/16 fe80::42:5dff:fe72:af9a/64 
veth13bc976@if55 UP             fe80::545d:c8ff:fe52:dfb4/64 
veth2d3a932@if65 UP             fe80::e87a:4aff:feec:2920/64 

Interesting.

ko-fi