Python网络带宽监视器

时间:2013-03-25 13:39:00

标签: python

我正在用python开发一个程序,一个元素告诉用户自程序打开以来他们使用了多少带宽(不仅仅是在程序中,而是在程序打开时定期进行Web浏览)。输出应以GTK

显示

是否有任何存在,如果没有,你能否指出我正确的方向。似乎我必须编辑像pythonproxy这样的现有代理脚本,但我看不出我将如何使用它。

谢谢,

4 个答案:

答案 0 :(得分:3)

对于我的任务,我使用psutil编写了非常简单的解决方案:

import time
import psutil

def main():
    old_value = 0    

    while True:
        new_value = psutil.net_io_counters().bytes_sent + psutil.net_io_counters().bytes_recv

        if old_value:
            send_stat(new_value - old_value)

        old_value = new_value

        time.sleep(1)

def convert_to_gbit(value):
    return value/1024./1024./1024.*8

def send_stat(value):
    print ("%0.3f" % convert_to_gbit(value))

main()

答案 1 :(得分:1)

好吧,不确定是否存在某些东西(用python编写),但你可能想看看以下内容。

  1. Bandwidth Monitoring(不是一个非常活跃的项目,但可能会给你一个想法)。

  2. Munin Monitoring(基于珍珠的网络监控项目)

  3. ntop(用C / C ++编写,基于libpcap)

  4. 如果你想要自己做一些事情,也只是给你指点,一种方法是使用sudo cat /proc/net/dev计算和存储数据包

答案 2 :(得分:0)

代理仅涵盖配置为使用它的网络应用程序。你可以设置,例如一个使用代理的Web浏览器,但是当您的代理退出时会发生什么?

我认为最好的办法是在堆叠中向下移动。有一个程序已经执行此操作,iftophttp://en.wikipedia.org/wiki/Iftop

您可以从阅读iftop的源代码开始,也许将其包装到Python C扩展中。或者重写iftop以将数据记录到磁盘并从Python中读取它。

答案 3 :(得分:0)

像WireShark(https://wiki.wireshark.org/FrontPage)这样的东西会成功吗?我现在正在解决类似的问题,并且倾向于使用pyshark(WireShark / TShark包装器)来完成该任务。这样,您可以轻松获取捕获文件信息。