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