python - băng thông gửi đi cho ips công cộng

Aug 19 2020

Tôi đang sử dụng dòng mã dưới đây để kiểm tra tổng số byte được gửi từ hộp centos của tôi

import psutil
psutil.net_io_counters().bytes_sent

Tôi muốn thực hiện điều này chỉ cho IP công cộng. Nói cách khác, tôi muốn tính toán băng thông gửi đi chỉ dành cho IP công cộng.

Trả lời

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