Автоматизация при помощи встроенного скриптового языка и RouterOS API
-
r136a8
- Сообщения: 169
- Зарегистрирован: 04 дек 2017, 00:01
Сообщение
r136a8 » 15 сен 2019, 18:33
Добрый день. Есть вот такой скрипт который ограничивает пользователя после достижение 4gb трафика и уменьшением скорости для данного пользователя до 64 kbit/s. Скрипт проверил работает (rb4011)
Код: Выделить всё
:local traf;
/queue simple
:if ([/queue simple find target-addresses=("192.168.15.35")] != "") do={
:set traf [get [find target-addresses=("192.168.15.35")] total-bytes]
:if ($traf > 4294967296) do = {
set [find target-addresses=("192.168.15.35")] max-limit= 64000/64000
}
}
Страница с описанием
http://wiki.netair.by/wiki/settings/limittraf1
У меня вопрос а как настроить планировщик - Sheduler. Когда скрипт должен запускаться? В моем случае я его запустил вручную.
К примеру после перезагрузки микротика его нужно запускать повторно (тогда установить Start time - startup?) или его нужно запускать периодично каждый день? Я правильно понял что все обнуляется после перезагрузки, счетчики и скрипты?
Спасибо
-
Chupaka
- Сообщения: 2167
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
-
Контактная информация:
Сообщение
Chupaka » 16 сен 2019, 13:35
Добрый.
Скрипт просто проверяет, сколько трафика прошло через очередь - и меняет настройки очереди, если много

Так что запускать каждые N минут. Да, счётчики при перезагрузке сбрасываются. Ну и я бы переписал скрипт в более простой для восприятия форме (с поправками на синтаксис актуальных версий: /32 после адреса и target вместо target-addresses - у вас на какой версии оно работало в таком виде?):
Код: Выделить всё
/queue simple
:foreach i in=[find target="192.168.15.35/32"] do={
:if ([get $i total-bytes] > 4294967296) do={
set $i max-limit= 64000/64000
}
}
-
r136a8
- Сообщения: 169
- Зарегистрирован: 04 дек 2017, 00:01
Сообщение
r136a8 » 16 сен 2019, 14:19
У меня работал на актуальной 6.45.6
Вы имели ввиду вот так (в таком же виде и ничего не добавлять)
https://c.radikal.ru/c08/1909/7b/f12b234e3592.jpg
Спасибо.
Если, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!
-
Chupaka
- Сообщения: 2167
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
-
Контактная информация:
Сообщение
Chupaka » 16 сен 2019, 15:43
Ну, поскольку переменной traf у вас нет - то и строчку с её объявлением тоже можно удалить
r136a8 писал(а): ↑16 сен 2019, 14:19
Если, к примеру скрипт запускать каждых 30 минут и пользователь использует 3Gb из 4Gb и перезагрузится то все обнулится до 0Gb или скрипт продолжит работу с 3Gb?
Если обнуляется то скрипт актуален только при условии не перезагружатся!
Всё обнулится до нуля (ух

).
Встречал где-то давно рекомендации по хранению накопленного трафика в комментариях, дабы не быть зависимыми от перезагрузок, но готового решения показать, увы, не могу.
UserManager не поможет?