Титла: Simple traffic counter script or plasmoid Публикувано от: seaman в Dec 27, 2008, 12:39 Привет
От скоро притежавам 3G data modem и вече се появи първия проблем :-) Както знаете всички GSM оператори в БГ предлагат тази екстра НО ограничена по трафик. В този ред на мисли ми затрябва програмка за отчитане на трафика през 3G-то за да няма неприятни изненади. Софтуер по принцип не липсва - cacti, nagios, iptraf, iftop, vnstat, dstat, darkstat, ntop, etc - ама сега да си товаря машинката с Apache и PHP за да си пусна cacti примерно не става, а и останалите нямат простата функционалност, която се търси. Аз не съм програмист и от Regular Expression свят ми се завива :-), но алгоритъма ми е горе долу ясен. 1. #sudo wvdial --config /etc/wvdial.conf Закачаме модема и се вързваме за нета - появява се интерфейс ppp0. (да ама може и да не е ppp0) Значи скрипта\програмката първо трябва да прави проверка за ppp0 or die :-). Добра идея е потребителя да може да избира интерфейса. 2. #ifconfig ppp0 |grep bytes|cut -d":" -f2|cut -d" " -f1 //входящ трафик 2а. #ifconfig ppp0 |grep bytes|cut -d":" -f3|cut -d" " -f1 //изходящ трафик ifconfig си има брояч на трафика. Обаче тук проблема е, че този брояч се нулира при рестарт на машината или когато се извади модема. Скрипта/програмката трябва да записва(презаписва) тези стойности във временен фаил (temp.txt) докато е активна сесията. 3. След като се прекъсне връзката (прекрати изпълнението на 1. или инцидентно се извади модема) последните записани стойности в temp.txt трябва да се запишат в нов фаил total.txt. 4.При последваща сесия на 3G-то трябва да се нулира брояча на ifconfig и стоиностите в temp.txt трябва да са сбор от текущите стоиности от 2. и 2а. и стоиностите записани в total.txt (3) от предходната сесия. 5. Би било добре да се добавя и сбор от входящ и изходящ трафик, както и да се преобразува от bytes >Kbytes. Също така потребителя да може да задава максимален трафик при достигането на който да вади съобщение за надвишаване на лимита. 6.Скрипта/програмката трябва да е real time или да се изпълнява в cron 7. Да изкарва резултата от total.txt в реално време. Това може би не е най-интелигентното решение, но идеята е потребителя да следи месечния си трафик през 3G-то (а и не само ) и по възможност в реално време.Предполагам такава програмка ще е от полза на много от нас. Идеалния вариант е да се направи като plasmoid за KDE4 :-) Та така - дано да се намерят програмисти дето си нямат друга работа по празниците ;-) Весели празници на всички!!! Титла: Re: Simple traffic counter script or plasmoid Публикувано от: seaman в Jan 04, 2009, 22:36 Благодаря ти zeridon, че си преместил темата.
След няколко опита тип направи си сам – изкочиха няколко проблема: 1.Идеята да се пише постоянно във файл не е добра – в смисъл, че при интензивен трафик диска луд ще стане ;-). Може би само в края на сесията. 2.Ресетването на брояча на ifconfig е кофти работа. Оказва се, че при 32 битов драйвер брояча сам се ресетва на 4GB (2^32). ако искаме принудително да го направим – единственото решение е: #modprobe -r drivername && modprobe drivername , което не е особено интелигентно. И както се досещате, ако драйвера е компилиран в ядрото – само рестарт на машината. 3.Perl не става за тази работа. И за да се обоснова – следния глупав скрипт вдига load average: 3.51 и нагоре :-( Код
Еми това е – очевидно само идеята ще си остане. Честита нова година! Титла: Re: Simple traffic counter script or plasmoid Публикувано от: VladSun в Jan 05, 2009, 13:26 За да избегнеш много от посочените от теб проблеми можеш да ползваш iptables:
в иницализационния скрипт на iptables (rc.forewall в Slackware): Код
След това един скрипт, който се пуска на всеки 10 сек. да кажем и взима изхода от: Код
Може и само PPP_TOTAL верига да има. -Z осигурява зануляването на броячите непосредствено след взимането на стойността им. Титла: Re: Simple traffic counter script or plasmoid Публикувано от: VladSun в Jan 05, 2009, 14:19 3.Perl не става за тази работа. И за да се обоснова – следния глупав скрипт вдига load average: 3.51 и нагоре :-(Нещо не го разбирам цикъла ти ;) Сложи някъде в него един sleep и ще заспят нещата с load-a ;) Титла: Re: Simple traffic counter script or plasmoid Публикувано от: VladSun в Jan 05, 2009, 17:14 Perl решение ;)
Код
Преди да се пусне скрипта трябва да се изпълни еднократно следният скрипт: Код
и да се създаде директорията /var/log/traffaccount/ ЧНГ :) Титла: Re: Simple traffic counter script or plasmoid Публикувано от: shadowx в Jan 19, 2009, 02:18 Без каквито и да е iptables правила :)
Статистиката се взима от /proc/net/dev В случей, че новата стойност е по-малка от последната в temp.txt , датата, часа и последния резултат се добавят в total.txt Проверките са на 60 секунди. link -> http://gh0st.darknet.co.nz/traffic_counter.py Код
Титла: Re: Simple traffic counter script or plasmoid Публикувано от: Acho в Feb 17, 2023, 07:54 Мама ви спамерска.
|