本文在宝塔面板 7.1.1 上测试通过。
宝塔面板的流量统计调用 net_io_counters()
,把所有网卡的流量都统计在内。
只要把总流量减去本地回环流量即可。
task.py
/www/server/panel/task.py
第 202 行
networkIo = net_io_counters()[:4]
替换为
如果是单网卡:
networkIo = net_io_counters(pernic=True).get('网卡名')[:4]
如果是多网卡:
networkIo_lo = (0, 0, 0, 0)
if "lo" in net_io_counters(pernic=True).keys():
networkIo_lo = net_io_counters(pernic=True).get('lo')[:4]
networkIo = net_io_counters()[:4]
networkIo = tuple([networkIo[i]-networkIo_lo[i] for i in range(0,len(networkIo))])
system.py
/www/server/panel/class/system.py
第 447 行
networkIo = psutil.net_io_counters()[:4]
替换为
如果是单网卡:
networkIo = psutil.net_io_counters(pernic=True).get('网卡名')[:4]
如果是多网卡:
networkIo_lo = (0, 0, 0, 0)
if "lo" in psutil.net_io_counters(pernic=True).keys():
networkIo_lo = psutil.net_io_counters(pernic=True).get('lo')[:4]
networkIo = psutil.net_io_counters()[:4]
networkIo = tuple([networkIo[i]-networkIo_lo[i] for i in range(0,len(networkIo))])
发现下面还有一个 GetNetWorkOld(self)
490 多行,if pnetInfo[0] == 'io': continue
后面加上 if pnetInfo[0] == 'lo': continue
重启面板
打开终端
bt
1