Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Как можно посчитать трафик, который проходит через


Автор: pythonwin 9.8.2006, 09:52
Всем привет!

Есть задача - пожалуйста, помогите решить:

Цитата

Как можно посчитать трафик, который проходит через внешний (наружный) сетевой интерфейс.

Автор: spin2 9.8.2006, 11:09
по snmp?

Автор: J2A 9.8.2006, 11:48
а python при чем?

Автор: pythonwin 9.8.2006, 11:57
лучше использовать Python

Добавлено @ 11:57 
Цитата(spin2 @  9.8.2006,  18:09 Найти цитируемый пост)
по snmp? 

А это что такое?

Добавлено @ 12:01 
OS = Debian

Автор: J2A 9.8.2006, 13:22
Цитата(pythonwin @ 9.8.2006,  14:57)

Добавлено @ 11:57 
Цитата(spin2 @  9.8.2006,  18:09 Найти цитируемый пост)
по snmp? 

А это что такое?

Пора уж научиться задавать такой вопрос http://ru.wikipedia.org/wiki/SNMP или http://www.google.ru/search?q=snmp, а не в форуме.

Автор: Vach 9.8.2006, 13:40
Попробуй так:
Код
import os

print os.popen('iptables -L -v').read()

Вызывай + считай разницу.
Удачи.

Автор: pythonwin 9.8.2006, 13:56
прошу простить меня великодушно, - что-то я сглупил с "snmp" - подумал что это библиотека Питона.

Автор: pythonwin 10.8.2006, 09:13
Цитата(Vach @  9.8.2006,  20:40 Найти цитируемый пост)
Вызывай + считай разницу.


Vach, вызвал и записал в файл, а вот как расчитать разницу не пойму? (трафик за день, месяц, квартал, 6 месяцев, год)

Автор: Vach 10.8.2006, 13:17
В файл не нужно, вызывай периодически и считай разницу между вызовами.

Хотя с "iptables" это скорее всего велосипед получится, поспрашай консольную утилиту - что трафик умеет считать.
А после вызывай её "os.popen" и пользуй готовый результат...

Автор: pythonwin 10.8.2006, 13:52
содержимое iptable вытащил но как вытащить оттуда данные по тарфику не понял.



Автор: Vach 10.8.2006, 16:13
Поставь "vnstat" (Console-based network traffic monitor)
Код
import os

sTraf = os.popen('vnstat -u -q').read().replace(' ', '')
for sKey in {'received:':0, 'transmitted:':0, 'total:':0,}:
    find_sKey = sTraf.find(sKey)
    print sKey + sTraf[find_sKey + len(sKey):sTraf.find('\n',find_sKey)]

Я сам в консольных утилитах не силён, скорее всего есть более удобные чем "vnstat"
В доки сказано что может работать без рута - но у меня не захотела обнавлять базу...
Под рутом всё работает.

Автор: pythonwin 10.8.2006, 16:52
Vach, спасибо, сейчас попробую!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)