我正在用python开发一个程序,一个元素告诉用户自程序打开以来他们使用了多少带宽(不仅在程序内,而且在程序打开时定期浏览网页)。输出应显示在 GTK 中
是否存在任何东西,如果没有,您能否指出我正确的方向。似乎我必须编辑一个现有的代理脚本,如 pythonproxy,但我看不出我将如何使用它。
谢谢,
我正在用python开发一个程序,一个元素告诉用户自程序打开以来他们使用了多少带宽(不仅在程序内,而且在程序打开时定期浏览网页)。输出应显示在 GTK 中
是否存在任何东西,如果没有,您能否指出我正确的方向。似乎我必须编辑一个现有的代理脚本,如 pythonproxy,但我看不出我将如何使用它。
谢谢,
对于我的任务,我使用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()
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)
应该是工作
好吧,不确定是否存在某些东西(用 python 编写),但您可能想看看以下内容。
带宽监控(不是一个真正活跃的项目,但可能会给你一个想法)。
Munin Monitoring(基于珍珠的网络监控项目)
ntop(用 C/C++ 编写,基于 libpcap)
如果您想自己做某事,也只是为了给您指点,一种方法可能是使用计数和存储数据包sudo cat /proc/net/dev
代理仅涵盖配置为使用它的网络应用程序。您可以设置,例如使用代理的网络浏览器,但是当您的代理退出时会发生什么?
我认为最好的办法是在堆栈的下方挂钩。已经有一个程序可以做到这一点,iftop
. http://en.wikipedia.org/wiki/Iftop
您可以从阅读 的源代码开始iftop
,也许将其包装到 Python C 扩展中。或者重写iftop
以将数据记录到磁盘并从 Python 中读取。
像 WireShark ( https://wiki.wireshark.org/FrontPage ) 这样的东西可以解决问题吗?我现在正在处理一个类似的问题,并且倾向于使用pyshark
WireShark/TShark 包装器来完成这项任务。这样您就可以轻松获取捕获文件信息。