python - bande passante sortante pour les ips publiques

Aug 19 2020

J'utilise la ligne de code ci-dessous pour vérifier le nombre total d'octets envoyés hors de ma boîte centos

import psutil
psutil.net_io_counters().bytes_sent

Je veux effectuer cela uniquement pour l'adresse IP publique. En d'autres termes, je souhaite calculer la bande passante sortante uniquement pour l'adresse IP publique.

Réponses

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