Подскажите, что не так в последних двух строках скрипта:
:global pingcount 2;
:global pingsum ($pingcount*3-1);
:global checkip1 212.1.244.6;
:global checkip2 212.1.224.6;
:global checkip3 yandex.ru;
:global nbn "groupB";
:global yota "groupA";
:global carentmark [ /ip firewall mangle get 0 new-routing-mark];
:global testip1 [/ping $checkip1 count=$pingcount];
:global testip3 [/ping $checkip3 count=$pingcount];
:global testip2 [/ping $checkip2 count=$pingcount];
:global tip ($testip1+$testip2+$testip3);
:if (($tip<$pingsum) && ($currentmark=$nbn)) do={ /ip firewall mangle set 0 new-routing-mark=$yota; :log error "chanal DOWN"}
:if (($tip>=$pingsum) && ($currentmark=$yota)) do={ /ip firewall mangle set 0 new-routing-mark=$nbn; :log error "chanal UP"}
Если последние строки убрать, скрипт работает и переменные обновляются. Если оставить, то скрипт вообще перестает работать. Ни одна переменная не обновляется.
В скрипте перестали работать блоки if
- simpl3x
- Модератор
- Сообщения: 1532
- Зарегистрирован: 19 апр 2012, 14:03
у вас переменная задается:
:global carentmark [ /ip firewall mangle get 0 new-routing-mark];
а дальше вы используете:
:if (($tip<$pingsum) && ($currentmark=$nbn)) do={ /ip firewall mangle set 0 new-routing-mark=$yota; :log error "chanal DOWN"}
:if (($tip>=$pingsum) && ($currentmark=$yota)) do={ /ip firewall mangle set 0 new-routing-mark=$nbn; :log error "chanal UP"}
:global carentmark [ /ip firewall mangle get 0 new-routing-mark];
а дальше вы используете:
:if (($tip<$pingsum) && ($currentmark=$nbn)) do={ /ip firewall mangle set 0 new-routing-mark=$yota; :log error "chanal DOWN"}
:if (($tip>=$pingsum) && ($currentmark=$yota)) do={ /ip firewall mangle set 0 new-routing-mark=$nbn; :log error "chanal UP"}