Скрипт
Добавлено: 01 фев 2013, 15:20
Здравствуйте, возникла такая проблема. Пытаюсь настроить резервирование 2-х каналов интернет посредством скриптов которые должны менять значение distance на gateway-ях по ситуации. Если работает основной интернет то трафик идёт через шлюз первого провайдера с distance=1, в это время на резервном канале значение distance=2, если пропадает интернет на основном канале скриптом значения distance на двух шлюзах меняются местами, тем самим делает из резервного канала как-бы основной, и когда на основном канале интернет появляется всё возвращаться обратно. Было реализовано следующим образом:
1-й скрипт определяет доступность шлюза провайдера:
Скрипт запускается каждые 30 секунд.
Два вторых скрипта которые задают глобальные переменные для выполнения условия:
и
Выполняется каждые 35 секунд.
ну и последний скрипт который должен переводить на резервный канал:
и
Выполняются с интервалом в 1 минуту и 1:10.
Проблема в том что вот те самые скрипты которые выполняют переключение и не работают, в окне скриптов показывает что скрипт выполнен но на самом деле нечего не срабатывает, при этом если вручную вбить данную команду в консоль то всё проходит отлично и переключает так как нужно.
Добавлял в начало и в конец скрипта строки чтобы определить на каком этапе скрипт не проходит и пришел к выводу что он не отрабатывает вообще, т.е. не воспринимает команду :if в скрипте.
Подскажите можно его заставить работать или какой-нибуть альтернативный метод который 100% рабочий?
1-й скрипт определяет доступность шлюза провайдера:
Код: Выделить всё
:global PingCount 3;
:global CheckIp1 193.239.255.130;
:global CheckIp2 82.144.202.129;
:global isp1 [/ping $CheckIp1 count=$PingCount];
:global isp2 [/ping $CheckIp2 count=$PingCount];
Скрипт запускается каждые 30 секунд.
Два вторых скрипта которые задают глобальные переменные для выполнения условия:
Код: Выделить всё
:global maingw [/ip route get [find comment="main"] distance];
и
Код: Выделить всё
:global backgw [/ip route get [find comment="reserv"] distance];
Выполняется каждые 35 секунд.
ну и последний скрипт который должен переводить на резервный канал:
Код: Выделить всё
:if (($isp1=0) && ($backgw=2)); do={ /ip route set distance=2 number=0; :ip route set distance=1 number=1:}
и
Код: Выделить всё
:if (($isp1=$PingCount) && ($maingw=2)) do={ /ip route set [find comment="reserv"] distance=2; /ip route set [find comment="main"] distance=1;}
Выполняются с интервалом в 1 минуту и 1:10.
Проблема в том что вот те самые скрипты которые выполняют переключение и не работают, в окне скриптов показывает что скрипт выполнен но на самом деле нечего не срабатывает, при этом если вручную вбить данную команду в консоль то всё проходит отлично и переключает так как нужно.
Добавлял в начало и в конец скрипта строки
Код: Выделить всё
:log info "test"
Подскажите можно его заставить работать или какой-нибуть альтернативный метод который 100% рабочий?