:local comment 10.10.10.12;
:local i [queue simple get number=[find comment=10.10.10.12]];
:if (i=true) do={queue simple
set [find comment="$comment"] max-limit=3M/3M}
else={queue simple add max-limit=3M/3M comment=10.10.10.12 target=10.10.10.12}
Смысл скрипта - скрипт запускается с биллинга UTM5, этот скрипт должен проверить есть ли в Queues Simple правило с комментарием 10.10.10.12, если да, то изменить max-limit на 3Мб/3Мб, если же правила с таким комментарием нет, то создать новое правило и присвоить ему комментарий 10.10.10.12, target 10.10.10.12 и max-limit 3Мб/3Мб. Как я не боролся с этим скриптом никак не получается выполнить условие if, т.е. даже если есть правило с комментарием 10.10.10.12 без указания max-limit, то всё равно создается новое правило с указанными данными. Помогите добиться выполнения проверки if. Заранее спасибо
Последний раз редактировалось obesbash 23 апр 2018, 23:55, всего редактировалось 1 раз.
Chupaka, большое спасибо, скрипт работает. Но есть одна загвоздка, мне нужно этот скрипт выполнить с терминала сплошной строкой, т.е. :local exists false; :foreach i in=[/queue simple find comment=10.10.10.12] do={queue simple set $i max-limit=3M/3M :set exists true;} :if (!$exists) do={/queue simple add max-limit=3M/3M comment=10.10.10.12 target=10.10.10.12}. Но микротик ругается(выделяет крастным цветом ":set"), если сразу после "do={queue simple set $i max-limit=3M/3M" я ставлю ":set". Понимаю, что допускаю где-то синтаксическую ошибку
P.S. скрипт работает если запускать его с system scripts, а мне нужно терминала =)