ASP 24

Продажа оборудования
        для интернет-провайдеров

Войти

Перезвоните мне


  
Обязательное поле не может быть пустымНеверный номер телефонаНомер должен содержать от 10 до 13 цифр
*
Неверный адрес e-mail
  

Даже не знаю, обращаюсь впервые
Иван Добында
Максим Боднарюк
Эльвина Османова
Андрей Геряк
Сообщение содержит запрещенне ссылки

Укажите, пожалуйста, какой вопрос Вас интересует;
номер Вашего заказа; время, в которое Вам удобно принять звонок

Наш продавец-консультант перезвонит
Вам в ближайшее рабочее время.

График работы магазина:
Пн - Пт с 10:00 до 18:00.

Приносим наши извинения, если Вы уже пытались нам позвонить и не дозвонились. Теперь мы перезвоним Вам сами.


Перезвоните мне Отменить
Обработка заказа звонка...
Ваш заказ обратного звонка принят!
Наш продавец-консультант свяжется с Вами в течении рабочего дня.

Если уже больше 18 часов или сегодня выходные, ожидайте нашего звонка в ближайший рабочий день.

Спасибо, что обратились именно к нам!

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

Попробовать снова Отменить
+38 (050) 22–57–770
+38 (050) 22–58–880
+38 (050) 43–42–444
+38 (098) 89–66–219

Перезвоните мне

 
Оплата Доставка Сервис Контакты

Скрипт уменьшения скорости пользователей после превышения лимита

Допустим, вы купили Mikrotik RouteBoard RB493AH, Mikrotik RouterBoard 1100, Mikrotik RouterBoard 433AH и произвели все необходимые настройки.

Рассмотрим ситуацию: пользователям предоставляется доступ к сети Интернет на скорости 5мбит/c. Нужно уменьшить скорость пользователям, которые превысили лимит в 5000 Мбайт.

Скрипт выглядит так.

 

:local upload;

:local download;

:local totaltraf;

:local realtraff;

:local limit;

:set limit 5000;

:for y from=2 to=254 do={:local n; :set n "user$y"; :put $n; :set realtraff [/queue simple get "$n" byte]; :set upload [:pick $realtraff 0 ([:find $realtraff "/"]-1)]; :set download [:pick $realtraff ([:find $realtraff "/"]+1) [:len $realtraff]]; :set totaltraf (($upload + $download) / 1048576); :put $totaltraf; :if ($totaltraf >= $limit ) do={ /queue simple set [find name="$n"] max-limit="1M/1M"}}


Разбор скрипта.

:local upload;

:local download;

:local totaltraf;

:local realtraff;

:local limit;

:set limit 5000;

Создаются необходимые переменные и переменной «limit» присваивается нужное значение.

  

:for y from=2 to=254 do={:local n; :set n "user$y"; :put $n; :set realtraff [/queue simple get "$n" byte];

Извлекается значение о переданном и полученном трафике и заносится в переменную realtraff.

 

Рис.1. Количество трафика.

 

Значение трафика отображается в таком виде: 54634544/4543543. Левая часть – upload, правая – download. Для работы нам нужно получить целые числа.

 

:set upload [:pick $realtraff 0 ([:find $realtraff "/"]-1)];

:set download [:pick $realtraff ([:find $realtraff "/"]+1) [:len $realtraff]];

:set totaltraf (($upload + $download) / 1048576);

Складываем оба значения, переводим в мегабайты, и заносим в переменную totaltraf.

 

:if ($totaltraf >= $limit ) do={ /queue simple set [find name="$n"] max-limit="1M/1M"}

Производим сравнение. Если суммарный трафик равен или превышает лимит, то уменьшаем скорость для этого пользователя до 1-го Мбит/c.

 

Рис.2. Mikrotik RouteBoard RB493AH System Scheduler.

 

Переходим в планировщик System Scheduler.

 

Рис.3. Добавляем новый скрипт.

 

Добавляем скрипт в планировщик и выставляем интервал, через который будет срабатывать этот скрипт.

 


Рис.4. Работа скрипта.

 

У user110 явный перебор. Поэтому скрипт ограничил скорость только для этого пользователя. Нужно будет создать еще один скрипт, который будет выполняться один раз в сутки, обнулять статистику и возвращать правилам исходные значения.

 

 


 

Пошаговая видеоинструкция по уменьшению скорости пользователей после превышения лимита:

 

 

Евгений Рудченко специально для asp24

Отправить страницу на e-mail

Обязательное поле не может быть пустымНеверный адрес e-mail
*
Обязательное поле не может быть пустым
*

*
Обязательное поле не может быть пустым
Неверный адрес e-mail
  

Отправить Отменить
Отправка e-mail
E-mail успешно отправлен.

Продолжить покупки
Не удалось отправить e-mail

Попробовать снова Отменить


Хотите поделиться своими фотографиями или статьями? Отправляйте их на hertyweb@asp24.com.ua. Мы обязательно разместим их у нас на сайте!

Комментарии

****

Оценка: 4.9    Голосов: 9   Комментарии: 9
-->
Автор: tx
Добавлено: 24.11.2011, 11:49

*****

Ошибка из за того что вы не читали http://asp24.com.ua/obzor/mikrotik-statji/system/scripts/mikrotik-script-vvedenije/
Два действия делать не обязательно, можно справится и одним. :local limit 1000;
Автор: tx
Добавлено: 23.11.2011, 04:45

*****

http://shop.esstream.com/index.php/mikrotik-routerboard/89-mikrotik--.html

Вот так?
Автор: Стас
Добавлено: 22.11.2011, 09:30

*****

Почему при вводе :set limit 1000; выходит
expected variable name (line 1 column 6) при этом выделяется l в limit.
Спасибо.
Автор: tx
Добавлено: 21.11.2011, 21:09

*****

Да. Вы поняли правильно.
Автор: Стас
Добавлено: 21.11.2011, 16:38

*****

Если я правильно понимаю - это: :for y from=2 to=254?
А "user$y" нужно менять под соответсвующего пользователя?
Спасибо.
Автор: tx
Добавлено: 21.11.2011, 11:19

*****

Убрать оператор for
Автор: Стас
Добавлено: 17.11.2011, 16:38

*****

Что нужно изменить в скрипте, чтобы он работал для одного правила.
Автор: Михайло
Добавлено: 24.04.2011, 23:29

*****

Добавьте пожалуйста скрипт для уменьшения скорости после превышения лимита, например, днем, а ночью безлимит. Спасибо
Автор: Сергей Мерц
Добавлено: 12.03.2011, 14:21

****

Здравствуйте Евгений! Вот пишете "Нужно будет создать еще один скрипт", а его нет... Инструкция выглядит неоконченной и для начинающих пользователей непонятной. Дополните пожалуйста вторым скриптом эту инструкцию для обнуления ежесуточного трафика!.. Спасибо...

Добавить новый комментарий

*
*

Введите символы с картинки.

  Redraw

Символы: 

© 2007-2012 ASP 24.

 

Загрузка...

Total Duration: 0.200707912445
0.1233 (0.1233)