发布时间:2018-08-05 21:04:01编辑:admin阅读(19242)
使用python监控系统时,获取网卡流量是比较难搞的,网上找了一个比较好的脚本,分享一下!
psutil模块是一个跨平台的获取进程和系统应用情况(CPU,内存,磁盘,网络,传感器)的库。该模块用于系统监控、限制进程资源和运行进程的管理等方面
安装模块psutil
pip install psutil
亲测Linux和Windows使用正常
net_traffic.py
#!/usr/bin/env python # -*- coding: utf-8 -*- try: import psutil except ImportError: print('Error: psutil module not found!') exit() def get_key(): key_info = psutil.net_io_counters(pernic=True).keys() recv = {} sent = {} for key in key_info: recv.setdefault(key, psutil.net_io_counters(pernic=True).get(key).bytes_recv) sent.setdefault(key, psutil.net_io_counters(pernic=True).get(key).bytes_sent) return key_info, recv, sent def get_rate(func): import time key_info, old_recv, old_sent = func() time.sleep(1) key_info, now_recv, now_sent = func() net_in = {} net_out = {} for key in key_info: # float('%.2f' % a) net_in.setdefault(key, float('%.2f' %((now_recv.get(key) - old_recv.get(key)) / 1024))) net_out.setdefault(key, float('%.2f' %((now_sent.get(key) - old_sent.get(key)) / 1024))) return key_info, net_in, net_out while 1: try: key_info, net_in, net_out = get_rate(get_key) for key in key_info: # lo 是linux的本机回环网卡,以太网是我win10系统的网卡名 if key != 'lo' or key == '以太网': print('%s\nInput:\t %-5sKB/s\nOutput:\t %-5sKB/s\n' % (key, net_in.get(key), net_out.get(key))) except KeyboardInterrupt: exit()
注意:以太网是我win10网卡名,可自行更改
数字显示,改成保留小数点2位,使用float
运行脚本,使用迅雷下载一步高清电影,效果如下:
将代码拷贝到Linux服务器,运行一下。
下载一个软件包,效果如下:
上一篇: python 优雅获取本机 IP 方法
下一篇: python 统计MySQL表信息
47603
45980
36906
34465
29078
25710
24565
19711
19242
17755
5562°
6154°
5688°
5734°
6701°
5482°
5483°
5986°
5963°
7294°