2013-03-25 5 views
2

Я разрабатываю программу на языке python, и один элемент сообщает пользователю, сколько полосы пропускания они использовали с момента открытия программы (не только внутри программы, но и обычного просмотра веб-страниц во время открытия программы) , Выход должен отображаться в GTKМонитор полосы пропускания сети Python

Есть ли что-то в наличии, если нет, вы можете указать мне в правильном направлении. Похоже, мне пришлось бы отредактировать существующий прокси-скрипт, такой как pythonproxy, но я не вижу, как я его буду использовать.

Спасибо,

ответ

0

Прокси будет охватывать только сетевые приложения, которые были сконфигурированы, чтобы использовать его. Вы можете установить, например. веб-браузер для использования прокси-сервера, но что происходит, когда ваш прокси-сервер выходит?

Я думаю, что самое лучшее, что нужно сделать, это зацепить нижнюю часть стека. Есть программа, которая делает это уже, iftop. http://en.wikipedia.org/wiki/Iftop

Вы можете начать с чтения исходного кода iftop, возможно, оберните его в расширение Python C. Или перепишите iftop, чтобы записывать данные на диск и читать их с Python.

1

Ну, не уверен, что если что-то существует (написано на python), но вы можете взглянуть на следующее.

  1. Bandwidth Monitoring (не очень активного проекта, но может дать вам идею).

  2. Munin Monitoring (проект, жемчужные на основе сети мониторинга)

  3. ntop (написан на C/C++, основанный на Libpcap)

Кроме того, только чтобы дать вам указатели, если вы хотите сделать что-то само по себе, одним способом может быть подсчет и хранение пакетов с использованием sudo cat /proc/net/dev

1

Для моей задачи я написал очень простое решение, используя 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() 
Смежные вопросы