Re[2]: [Volgograd] Учет трафика

rikhar rikhar на rambler.ru
Пт Июн 18 10:18:24 MSD 2004


Hello Scor2k,

Friday, June 18, 2004, 8:55:47 AM, you wrote:

S> rikhar wrote:
>>>>Вопрос такой. Есть в sisyphus какой-нибудь счетчик трафика работающий из
>>>>коробки, для полных ламеров (не для меня ;)), для ppp соединений? Ну кто
>>>>и сколько в нете просидел по dial-up? 
>> S> Забыл... нужно чтобы отчет велся, ну там через MySQL, можно даже с
>> S> web-мордой...

>> А что KPPP использовать неохота?

S> KPPP - это "попса" ;) Использовать его для дозвона - жутко не удобно.
S> Хотя бы по причине того, что нужно ждать содеинения для проверки почты
S> (не, я конечно понимаю что при соединении можно выполнить скрипт... но
S> когда таких скриптов 2-3 шт. уже не удобно)... Для дозвона к ISP можно
S> использовать т.н. скрипты, про которые есть на http://volgograd.lug.ru и
S> это на много более удобно. Это конечно ИМХО.


Учёт трафика

   База данных
   Статистику по утилизации GPRS проще всего хранить в базе данных. Для
   этого заведём новую базу данных:

    CREATE DATABASE traffic;

   И таблицу для статистики по утилизации:
    
   CREATE TABLE gprs (
      id smallint(5) unsigned NOT NULL auto_increment,
      user varchar(16) NOT NULL default '',
      download int(10) unsigned NOT NULL default '0',
      upload int(10) unsigned NOT NULL default '0',
      time datetime NOT NULL default '0000-00-00 00:00:00',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM COMMENT='Трафик на GPRS';

   Теперь дадим права на выборку и вставку записей:

    GRANT insert, select ON traffic.* TO gprs на localhost IDENTIFIED BY "topsecret";


Усовершенствуем скрипт

   После внесения изменения скрипт будет выглядеть следующим образом:
    
   #!/bin/bash
    # (c) 2003 Ruslan Popov aka RaD
    # Скрипт для работы с GPRS
    if [ -f /var/run/mysqld/mysqld.pid ]; then
        if [ -f /var/run/ppp0.pid ]; then
            echo "Kill GPRS connection..."
            STR=`/sbin/ifconfig ppp0 | grep "RX bytes"`
            DWN=`echo $STR | sed "s/.*RX bytes:\(.*\) (.*) *TX bytes:\(.*\) (.*/\1/"`
            UPL=`echo $STR | sed "s/.*RX bytes:\(.*\) (.*) *TX bytes:\(.*\) (.*/\2/"`
            echo "INSERT INTO traffic.gprs SET user='$SUDO_USER',download='$DWN',upload='$UPL',time=NOW()" | \
            mysql -u gprs -ptopsecret
            kill `cat /var/run/ppp0.pid`
        else
            echo "Open GPRS connection..."
            /usr/sbin/pppd call gprs
            if [ `/sbin/route|grep "default.*ppp0"` == "" ]; then
                echo "Sets the default route..."
                /sbin/route add default gw 192.168.254.254
            fi
        fi
    fi

   А теперь небольшие пояснения. Первым делом проверяется наличие
   работающего демона базы данных, после этого проверяется открыто
   соединение по ppp0 или нет. Если открыто, то выполняется фаза
   отключения соедининия. При этом снимается статистика по трафику с
   интерфейса и помещается в базу данных. Если соединения нет, то оно
   создаётся. Дополнительно создаётся маршрут по умолчанию.
   Думаю, всё очень просто.

   Принимаются предложения по усовершенствованию...

   Усовершенствование на базе /usr/sbin/tcpdump -q -p -nn -i eth0 -S -t -e

   0:c:6e:41:c7:7f 0:8:2:f9:4b:61 66: 192.168.10.157.50324 >
   192.168.10.84.8080: tcp 0 (DF)
   0:8:2:f9:4b:61 0:c:6e:41:c7:7f 1514: 192.168.10.84.8080 >
   192.168.10.157.50324: tcp 1448 (DF)
   0:8:2:f9:4b:61 0:c:6e:41:c7:7f 78: 192.168.10.84.8080 >
   192.168.10.157.50324: tcp 12 (DF)
   0:c:6e:41:c7:7f 0:8:2:f9:4b:61 66: 192.168.10.157.50324 >
   192.168.10.84.8080: tcp 0 (DF)

Ну там под себя подстроишь, и все работает...

-- 
Best regards,
 rikhar
 ICQ 265222031                        mailto:rikhar на rambler.ru




Подробная информация о списке рассылки Volgograd