python: ancho de banda saliente para ips públicas

Aug 19 2020

Estoy usando la siguiente línea de código para verificar el total de bytes enviados desde mi caja de centos

import psutil
psutil.net_io_counters().bytes_sent

Quiero realizar esto solo para la IP pública. En otras palabras, quiero calcular el ancho de banda saliente solo para IP pública.

Respuestas

kerasbaz Aug 20 2020 at 03:11
import ipaddress
import psutil

net = psutil.net_io_counters(pernic=True)

for name, interface in psutil.net_if_addrs().items():
    for address in interface:
        try:
            network = ipaddress.IPv4Network(f'{address.address}\{address.netmask}')
            if not network.is_private and not network.is_reserved:
                print(net[name].bytes_sent)
                break
        except ValueError as e:
            # these would be eg MAC addresses or similar
            pass