我正在寻找一种以编程方式(无论是调用库还是独立程序)监视linux中实时IP流量的方法。我不希望总计,我想要当前正在使用的带宽。我正在寻找与OS X的istat菜单的网络流量监视器类似的工具(但不是图形工具)。
我相当确定存在这样的东西,但是我不确定在哪里看,我宁愿不必重新发明轮子。
它像监视套接字一样简单吗?还是我需要一个可以为我处理大量开销的实用程序?
最佳答案
/ proc / net / dev中有字节和数据包计数器,因此:
import time
last={}
def diff(col): return counters[col] - last[iface][col]
while True:
print "\n%10s: %10s %10s %10s %10s"%("interface","bytes recv","bytes sent", "pkts recv", "pkts sent")
for line in open('/proc/net/dev').readlines()[2:]:
iface, counters = line.split(':')
counters = map(int,counters.split())
if iface in last:
print "%10s: %10d %10d %10d %10d"%(iface,diff(0), diff(8), diff(1), diff(9))
last[iface] = counters
time.sleep(1)