Page 14 of 17 FirstFirst ... 41213141516 ... LastLast
Results 196 to 210 of 248

Thread: Приоритезация трафика (shaping) для разных провайдеров, тарифов и целей

  1. #196
    Не работает

    Для меня это сложно если можно напишите код который можно вставить в html скрипт с кнопкой (Обновить) и чтобы она запускала скрипт статистики.
    Спасибо.

    Ураааааа вот этот работает. СПАСИБО ТЕБЕ lsd_wiz !!!
    В итоге очень даже красиво получилось


    Еще вопрос теперь как в место IP, имя юзера сделать?
    Пример: Вася (192.168.1.1)
    Last edited by Omega; 19-03-2011 at 16:42.

  2. #197
    Join Date
    Mar 2009
    Location
    Minsk, Belarus
    Posts
    71
    Quote Originally Posted by YSL View Post
    Еще вопрос теперь как в место IP, имя юзера сделать?
    Пример: Вася (192.168.1.1)
    Code:
    ls -1 /opt/Billing/users/ | awk '{print("<tr><td>"$1"</td></tr>");system("cat /opt/Billing/users/"$1)}' | awk '{
    if(($1) == "192.168.1.1"){$1="Вася"}
    print(\
    "<tr><td><font color=blue>",$1,"</font></td><td><font color=green>",$2,"</font></td><td><font color=red>",$3,"</font></td><td><font color=blue>",$4,"</font></td><td><font color=blue>",$5,"</font></td></tr>")}' >> $WEB
    Или переписать скрипты и имя фигачить сразу в /opt/etc/users
    Code:
    00:12:2c:34:12:34  192.168.1.1  Вася
    и имя брать прямо оттуда.

  3. #198
    По просьбам пишу полное описание настройки скрипта статистики.

    Для работи скрипта нужно сконфигурировать lighttpd и cron.
    Не забываем при настройке lighttpd в файл lighttpd.conf добавить строчку
    Code:
    index-file.names            = ( "index.php", "index.html")
    server.event-handler = "poll" # needed on OS X
    mimetype.assign
    Настраиваем подсчет трафика:
    Для удобства настройки и работы еще можно настроить mc.
    1.Создаем директории

    Code:
    mkdir /opt/Billing
    mkdir /opt/Billing/logs
    mkdir /opt/Billing/users
    touch /opt/Billing/all
    touch /opt/Billing/cnt
    touch /opt/etc/cron.5mins/end
    chmod +x /opt/Billing/cnt
    chmod +x /opt/Billing/all
    chmod +x /opt/etc/cron.5mins/end
    2.Создаем таблицу юзеров какую нам нада (пример)
    nano /opt/etc/users
    Code:
    00:00:11:11:11:00 192.168.1.11
    00:00:1a:1a:1a:00 192.168.1.15
    00:00:1c:1c:1a:00 192.168.1.2
    где (00:00:11:11:11:00) mac адрес сетевой и (192.168.1.1) ip юзера или своей сетевой.
    Ctrl O
    Enter
    Ctrl X




    2.Сам скрипт счетчика
    nano /opt/Billing/cnt
    Code:
    #!/bin/sh
    LOG="/opt/Billing/logs/`date  +%d-%m-%Y`"
    ULOG="/opt/Billing/users/`date +%d-%m-%Y`"
    DATE="`date +%d-%m-%Y`"
    echo "$1 `cat $LOG | grep \"0.0.0.0/0 $1\" | awk '
    BEGIN{a=0;x=0;b=0;x=0}
    {
    if (index($1,\"d\") == 0) a=(a+$1)
    x=a/1024/1024
    }
    END{if((a) != 0){printf(\"%.2f\",x)}else{print 0}}'` `cat $LOG | grep \"$1 0.0.0.0/0\" | awk '
    BEGIN{a=0;b=0;y=0}
    {
    if (index($1,\"d\") == 0) b=(b+$1)
    y=b/1024/1024
    }
    END{if((b) != 0){printf(\"%.2f\",y)}else{print 0}}'` `sh /opt/Billing/all $1`" | awk '
    BEGIN{a=0;b=0}
    {
    a=($2+$3)
    b=($4+a)
    }
    END{print($1,$2,$3,a,b)}' >> $ULOG
    Ctrl O
    Enter
    Ctrl X


    3. Создаем еще скрипт
    nano /opt/Billing/all
    Code:
    #!/bin/sh
    ULOG="/opt/Billing/users/"
    cd $ULOG
    cat * | grep $1 | awk '
    BEGIN {a=0}
    {if (($4) != 0){a=a+$4}}
    END {print a}'
    Ctrl O
    Enter
    Ctrl X


    4.И еще один
    nano /opt/etc/cron.5mins/end
    Code:
    #!/bin/sh
    ULOG="/opt/Billing/total"
    DATE="/opt/Billing/logs/`date +%d-%m-%Y`"
    LOG="/opt/Billing/users/`date +%d-%m-%Y`"
    WEB="/opt/share/www/user.html"
    rm $LOG
    rm $ULOG
    iptables -nvxL FORWARD | grep 192.168 | grep 0.0.0.0/0 | awk '{
    if (($2) != 0){print($2,$8,$9)}}'>> $DATE
    iptables -Z
    cat /opt/etc/users | awk '{if(($2) != ""){system("/opt/Billing/cnt "$2)}}'
    sleep 5s
    ls -l /opt/Billing/users/ | awk '{system("cat /opt/Billing/users/"$9)}' | awk '
    BEGIN{a=0;b=0,c=" "}
    {
     if(($3) != 0 && ($2) != 0)
     {
      if (index($2,"d") == 0){a=(a+$2)}
      if (index($3,"d") == 0){b=(b+$3)}
     }
    }
    END
    {
     if((a) != 0){printf("%.2f",a);printf(c)}else{print 0}
     if((b) != 0){printf("%.2f",b)}else{print 0}
    }' >> $ULOG
    echo "<html><link rel=stylesheet type=text/css href=vnstat_blue.css><body>" >> $WEB
    echo "<body><table border=1>" > $WEB
    echo "<tr><td><font color=blue>User_id</font></td><td><font color=green>Input:</font></td><td><font color=red>Output:</font></td><td><font color=blue>Total:</font></td><td><font color=blue>All day's:</font></td>" >> $WEB
    ls -1 /opt/Billing/users/ | awk '{print("<tr><td>"$1"</td></tr>");system("cat /opt/Billing/users/"$1)}' | awk '{
    print(\
    "<tr><td><font color=blue>",$1,"</font></td><td><font color=green>",$2,"</font></td><td><font color=red>",$3,"</font></td><td><font color=blue>",$4,"</font></td><td><font color=blue>",$5,"</font></td></tr>")}' >> $WEB
    echo "<tr><td><font color=blue>All total:</font></td>`cat /opt/Billing/total | awk '{print(\"<td><font color=green>\",$1,\"</font></td><td><font color=red>\",$2,\"</font></td>\")}'`</tr>" >> $WEB
    echo "</table></body></html>" >> $WEB
    Ctrl O
    Enter
    Ctrl X


    5.Добавляем правило+счётчик для каждого юзера
    добавить в nano /usr/local/sbin/post-firewall
    Code:
    #!/bin/sh
    iptables -F FORWARD
    CFG="/opt/.cfg"
    echo "#!/bin/sh" > $CFG
    USR="/opt/etc/users"
    cat $USR | awk '{print("iptables -A FORWARD -s",$2,"-j ACCEPT")}' >> $CFG
    cat $USR | awk '{print("iptables -A FORWARD -d",$2,"-j ACCEPT")}' >> $CFG
    sh $CFG
    Ctrl O
    Enter
    Ctrl X


    Code:
    chmod +x /usr/local/sbin/post-firewall
    7.В конце для сохранения
    Code:
    flashfs save && flashfs commit && flashfs enable && reboot
    Проверяем работу iptables
    Code:
    iptables -nvxL FORWARD
    Должно быть так
    Code:
    # iptables -nvxL FORWARD
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
        pkts      bytes target     prot opt in     out     source               destination
         469   111714 ACCEPT     all  --  *      *       192.168.1.2          0.0.0.0/0
         450    34108 ACCEPT     all  --  *      *       192.168.1.11         0.0.0.0/0
         528   424124 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.1.2
         115     8178 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.1.11
    Если по другому (или все 0 в таблице) то iptables не правильно работает проверяем
    nano /usr/local/sbin/post-firewall
    Code:
    #!/bin/sh
    iptables -F FORWARD
    CFG="/opt/.cfg"
    echo "#!/bin/sh" > $CFG
    USR="/opt/etc/users"
    cat $USR | awk '{print("iptables -A FORWARD -s",$2,"-j ACCEPT")}' >> $CFG
    cat $USR | awk '{print("iptables -A FORWARD -d",$2,"-j ACCEPT")}' >> $CFG
    sh $CFG
    И не забываем что нужно вставлять код так как есть, без лишних пробелов и остальных символов, копировать (Ctrl+C), так как работать не будет.


    После перегрузки роутера заходим на http://192.168.1.1:8081/user.html(не забываем что порт 8081 может быть разным смотря как вы настроили его в /opt/etc/lighttpd/lighttpd.conf)
    Code:
    server.port  = 8081
    И имеем приблизительно через некоторое время такую картинку
    Обновление происходит каждые 5 минут из /opt/etc/cron.5mins/end автоматически.


    Еще можно в место IP сделать имена юзеров.
    В скрипте /opt/etc/cron.5mins/end меняем на:
    Code:
    ls -1 /opt/Billing/users/ | awk '{print("<tr><td>"$1"</td></tr>");system("cat /opt/Billing/users/"$1)}' | awk '{
    if(($1) == "192.168.1.11"){$1="Вася"}
    if(($1) == "192.168.1.15"){$1="Петя"}
    if(($1) == "192.168.1.2"){$1="Маша"}
    print(\
    "<tr><td><font color=blue>",$1,"</font></td><td><font color=green>",$2,"</font></td><td><font color=red>",$3,"</font></td><td><font color=blue>",$4,"</font></td><td><font color=blue>",$5,"</font></td></tr>")}' >> $WEB
    Вроде все.

    Еще можно установить vnStat + vnStat PHP frontend.



    У меня после такой установки vnstat не заработал (все нули).
    Причина оказалась в стандартных для vnstat настройках cron.
    При установке ipkg install vnstat в директорию /opt/etc/cron.d/ пишется файл vnstat с ежепятиминутной командой /opt/bin/vnstat -u
    При ее выполнении vnstat находит директорию /opt/var/lib/vnstat/dumps, почему-то думает, что это его база, не может ее прочитать и стопорится.
    Поэтому файл /opt/etc/cron.d/vnstat я удалил, а /opt/etc/cron.5mins/vnstat.sh сделал следующим:

    Code:
    rm /opt/etc/cron.d/vnstat
    Code:
    touch /opt/etc/cron.5mins/vnstat.sh
    Code:
    chmod +x /opt/etc/cron.5mins/vnstat.sh
    Открываем
    nano /opt/etc/cron.5mins/vnstat.sh
    Code:
    #!/bin/sh
    
    dump_dir="/opt/var/lib/vnstat/dumps"
    
    vnstat -u -i ppp0
    vnstat -u -i vlan1
    vnstat -u -i eth1
    
    vnstat --dumpdb -i ppp0 > $dump_dir/vnstat_dump_ppp0
    vnstat --dumpdb -i vlan1 > $dump_dir/vnstat_dump_vlan1
    vnstat --dumpdb -i eth1 > $dump_dir/vnstat_dump_eth1
    Ctrl O
    Enter
    Ctrl X

    Code:
    flashfs save && flashfs commit && flashfs enable && reboot
    После перезагрузки ждем 5 мин и наблюдаем статистику.
    Все.
    Last edited by YSL; 01-03-2010 at 11:29.

  4. #199
    После обновления прошивки не работает скрипт статистики, показывает все нули.

    Code:
    [admin@(none) root]$ iptables -nvxL FORWARD
    Chain FORWARD (policy ACCEPT 475 packets, 163305 bytes)
        pkts      bytes target     prot opt in     out     source               destination
    [admin@(none) root]$
    Помогите, по моему что то с iptables.
    В чем может быть причина?

    Что нет спецов.
    ПОМОГИТЕ.
    Last edited by Omega; 19-03-2011 at 16:46.

  5. #200
    Quote Originally Posted by YSL View Post
    Что нет спецов.
    ПОМОГИТЕ.
    Давайте исходный текст вашей Web странички, внешний вид с указанием где должна быть эта кнопка и тогда я вам ее "прикручу".
    WL500gp v-1.9.2.7-10

  6. #201
    PHP Code:
    <?php
                    exec
    ("/opt/etc/cron.5mins/run",$data);
                    for (
    $i=0$icount($data);$i++) :
                    print 
    "$data[$i]<br>";
    ?>
    <br>
    <A HREF="***адрес страницы в окне браузера, без звездочек и в двойных кавычках типа http://192.168.1.1/blablabla.php***">Обновить</A>
    Last edited by ssyyzz; 23-06-2009 at 08:25.

  7. #202
    PHP Code:
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Statistic</title>
     </head>
           <body>
            <form action="" method="POST"><input type="submit" value="Refresh" name="button"></form>
    <?php
    if ( $_POST["button"]=="Refresh" )
    {
                    
    exec("/opt/etc/cron.5mins/run",$data);
                    for (
    $i=0$icount($data);$i++) :
                    print 
    "$data[$i]<br>";
    }
    ?>
    </body>
    WL-500GPremium v.1 default CPU&memory 1.9.2.7-10
    (HP1018, EZ-setup on/off wi-fi, FDD 1Gb Corsair: nginx+phpfcgi, cron+phpNOD32Updater, squid+ADredirector, swapon)

  8. #203
    Join Date
    Mar 2009
    Location
    Minsk, Belarus
    Posts
    71
    у тебя не запускается post-firewall
    Проделай настройку с заново.

  9. #204
    Спасибо, да действительно не правильно вставил в post-farewall, нужно внимательно вставлять скопированые скрипты, тогда все работать будет.

    А как вот это прикрутить к скрипту !!!???

    Code:
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Statistic</title>
     </head>
           <body>
            <form action="" method="POST"><input type="submit" value="Refresh" name="button"></form>
    <?php
    if ( $_POST["button"]=="Refresh" )
    {
                    exec("/opt/etc/cron.5mins/end",$data);
                    for ($i=0; $i< count($data);$i++) :
                    print "$data[$i]<br>";
    }
    ?>
    </body>
    И получится кнопочка "Refresh" которая запустит скрипт при нажатии, и обновит данные.
    Отдельно проверил что то он не запускает скрипт.(

    Не запускает он скрипт!!!

    Вот из скрипта который формирует WEB страничку
    Code:
    echo "<body><p><strong>Статистика трафика.</strong></p>
    <p><strong>/ Статистика / Сообщения / Счет / Обновить /</strong></p>
    <table border=1>" > $WEB
    echo "<tr>
      <td width="120"><div align="center"><strong><font color="blue">IP Юзера</font></strong></div></td>
      <td width="72"><div align="center"><strong><font color=green>Входящий:</font></strong></div></td>
      <td width="80"><div align="center"><strong><font color=red>Исходящий:</font></strong></div></td>
      <td width="73"><div align="center"><strong><font color=blue>За день:</font></strong></div></td>
      <td width="83"><div align="center"><strong><font color=red>За все дни:</font></strong></div></td>
      " >> $WEB
    ls -1 /opt/Billing/users/ | awk '{print("<tr><td>"$1"</td></tr>");system("cat /opt/Billing/users/"$1)}' | awk '{
    if(($1) == "192.168.1.2"){$1="Комп-1"}
    if(($1) == "192.168.1.11"){$1="DreamBox"}
    if(($1) == "192.168.1.15"){$1="Notebook"}
    print(\
    "<tr><td><font color=blue>",$1,"</font></td><td><font color=green>",$2,"</font></td><td><font color=red>",$3,"</font></td><td><font color=blue>",$4,"</font></td><td><font color=red><strong>",$5,"</strong></font></td></tr>")}' >> $WEB
    echo "<tr>
    <td><strong><font color=blue>Общий трафик:</font></strong></td>
    `cat /opt/Billing/total | awk '{print(\"<td><strong><font color=green>\",$1,\"</font></strong></td><td><strong><font color=red>\",$2,\"</font></strong></td>\")}'`</tr>" >> $WEB
    echo "</table>
    </body></html>" >> $WEB
    Как правильно его вписать сюда.
    Вверху просто слово ссылка (Обновить) вот на него нужно нажать и скрипт должен запускаться.
    Last edited by Omega; 19-03-2011 at 16:36.

  10. #205
    Quote Originally Posted by YSL View Post
    Не запускает он скрипт!!!

    Вот из скрипта который формирует WEB страничку

    Как правильно его вписать сюда.
    Вверху просто слово ссылка (Обновить) вот на него нужно нажать и скрипт должен запускаться.
    Вместо первых двух строк поставте это:
    Code:
    echo "<body><h3 align=center><hr width=480 noShade SIZE=8>Статистика трафика.</h3>
    <center><b>/ Статистика / Сообщения / Счет  </b>
    <form action=""  method=post>
    <input type="submit" value="Обновить" name="button"></form>
    <?php
    if ( $_POST['button'] == "Обновить" ){exec("/opt/etc/cron.5mins/run");}
    ?>
    и будет вам счастье.
    PS
    про chmod не забудьте - права на исполнение файла "run"
    WL500gp v-1.9.2.7-10

  11. #206
    После нажатия кнопки обновить выдает:
    404 - Not Found

    скрипт /opt/etc/cron.5mins/end находится на роутере dir-320(asus) а запускаю web страничку с компа windows.
    Last edited by YSL; 24-06-2009 at 10:11.

  12. #207
    Подложыте эти файлы на роутер.
    Преименуйте run2.txt в run2, up_but.txt в up_but.php.

    up_but.php должен быть в /opt/Billing/
    run2 должен быть в /opt/etc/crone.5mins/

    Для просмотра статистики используйте адрес http://my.router/user.php
    Attached Files Attached Files
    wl500gp-1.9.2.7-d-r1222 + StoreJet 35 Ultra >>> rtorrent+rutorrent -|- lighhtpd + ssl + auth -|- vnStat + vnStat PHP frontend -|- vsftpd -|- squid + lightsquid...

  13. #208
    Quote Originally Posted by YSL View Post
    После нажатия кнопки обновить выдает:
    404 - Not Found

    скрипт /opt/etc/cron.5mins/end находится на роутере dir-320(asus) а запускаю web страничку с компа windows.
    Прошу прощения - забыл экранировать спецсимволы.
    Code:
    echo "<body><h3 align=center><hr width=480 noShade SIZE=8>Статистика трафика.</h3>
    <center><b>/ Статистика / Сообщения / Счет  </b>
    <form action=\"\"  method=post>
    <input type=\"submit\" value=\"Обновить\" name=\"button\"></form>
    <?php
    if ( \$_POST['button'] == \"Обновить\" ){exec(\"/opt/etc/cron.5mins/run\");}
    ?>
    WL500gp v-1.9.2.7-10

  14. #209
    Join Date
    Mar 2009
    Location
    Minsk, Belarus
    Posts
    71
    Code:
    echo "<html>" > $WEB
    echo "<body><table border=1>" >> $WEB
    echo "<form action=\"\" method=\"POST\"><input type=\"submit\" value=\"Refresh\" name=\"button\"></form><?phpif ( $_POST[\"button\"]==\"Refresh\" ){exec(\"/opt/etc/cron.5mins/end\",$data);for ($i=0; $i< count($data);$i++):print \"$data[$i]<br>\";}?>" >> $WEB
    echo "<tr><td><font color=blue>User_id</font></td><td><font color=green>Input:</font></td><td><font color=red>Output:</font></td><td><font color=blue>Total:</font></td><td><font color=blue>All day's:</font></td>" >> $WEB
    ls -1 /opt/Billing/users/ | awk '{print("<tr><td>"$1"</td></tr>");system("cat /opt/Billing/users/"$1)}' | awk '{
    print(\
    "<tr><td><font color=blue>",$1,"</font></td><td><font color=green>",$2,"</font></td><td><font color=red>",$3,"</font></td><td><font color=blue>",$4,"</font></td><td><font color=blue>",$5,"</font></td></tr>")}' >> $WEB
    echo "<tr><td><font color=blue>All total:</font></td>`cat /opt/Billing/total | awk '{print(\"<td><font color=green>\",$1,\"</font></td><td><font color=red>\",$2,\"</font></td>\")}'`</tr>" >> $WEB
    echo "</table></body></html>" >> $WEB
    PS. чтоб скрипт работал, необходимо установить пакет php-fcgi и
    $WEB должен иметь расширение .php и иметь права на исполнеение.
    WEB="/opt/share/www/index.php"
    chmod a+rx /opt/share/www/index.php
    Last edited by lsd_wiz; 24-06-2009 at 15:57.

  15. #210
    Не работает.
    После запуска скрипта на роутере через пути проходит 7-8 сек запуска и инфа обновляется в web а после нажатия на кнопку обновление через 5 мин, ну cron естественно и запускает скрипты а не кнопка.

    Только Less чтото у меня с кодировкой не пойму как поправить после нажатия.

    ��������� 25-June-2009 01:30:50
    Last edited by YSL; 25-06-2009 at 02:58.

Page 14 of 17 FirstFirst ... 41213141516 ... LastLast

Similar Threads

  1. Настройки роутера для сетей разных провайдеров
    By Oleg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 248
    Last Post: 11-01-2016, 08:35
  2. Настройка роутера для двух провайдеров + DHCP
    By AndreyUA in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 98
    Last Post: 03-04-2014, 07:58
  3. Анализ трафика на wl500gP
    By mihalich in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 178
    Last Post: 19-05-2012, 13:59
  4. WiMAX - или Yota, убийца офисных провайдеров
    By euseller in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 899
    Last Post: 04-12-2010, 22:33
  5. New Specs from Asus - Audio Streaming and Traffic Shaping
    By ghaspias in forum WL-500g Pics & Specs
    Replies: 18
    Last Post: 25-04-2005, 06:58

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •