9

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

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

谢谢,

4

5 回答 5

16

对于我的任务,我使用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()
于 2016-04-04T08:12:50.343 回答
5
import time

def get_bytes(t, iface='wlan0'):
    with open('/sys/class/net/' + iface + '/statistics/' + t + '_bytes', 'r') as f:
        data = f.read();
        return int(data)

while(True):
    tx1 = get_bytes('tx')
    rx1 = get_bytes('rx')

    time.sleep(1)

    tx2 = get_bytes('tx')
    rx2 = get_bytes('rx')

    tx_speed = round((tx2 - tx1)/1000000.0, 4)
    rx_speed = round((rx2 - rx1)/1000000.0, 4)

    print("TX: %fMbps  RX: %fMbps") % (tx_speed, rx_speed)

应该是工作

于 2018-09-14T17:58:43.047 回答
3

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

  1. 带宽监控(不是一个真正活跃的项目,但可能会给你一个想法)。

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

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

如果您想自己做某事,也只是为了给您指点,一种方法可能是使用计数和存储数据包sudo cat /proc/net/dev

于 2013-03-25T14:02:31.113 回答
0

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

我认为最好的办法是在堆栈的下方挂钩。已经有一个程序可以做到这一点,iftop. http://en.wikipedia.org/wiki/Iftop

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

于 2013-03-25T13:55:07.633 回答
0

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

于 2019-07-14T13:20:27.687 回答