Страница 1 из 1

Скрипт включения интерфейса и проверки канала

Добавлено: 15 сен 2020, 06:32
Aleksandr.Barilo
День добрый столкнулся с такой проблемой , пытаюсь сделать скрипт который будет поднимать интерфейсы и проверять есть там связь

Но вот никак не могу понять где ошибка

Код: Выделить всё

/interface ethernet enable ether9
/interface pppoe-client enable 0
:delay 40;
:local checkip [/ping 8.8.4.4 count=25]
:if (checkip = 0) do={
system script modem_no_money
}
/interface pppoe-client disable 0
/interface ethernet disable ether9
Логика такая , интерфейс поднимается сперва физика потом PPPoE , затем проверка пинга ,если пинг не прошел запустить скрипт отправки мыла, затем отключение интерфейсов

но не работает даже такая конструкция

Код: Выделить всё

/interface pppoe-client enable 0
/interface ethernet enable ether9
/system script run testrst
:delay 50;
/interface pppoe-client disable 0
/interface ethernet disable ether9
После запуска скрипта соседнего этот перестает отрабатывать

Re: Скрипт включения интерфейса и проверки канала

Добавлено: 15 сен 2020, 08:49
Sertik
Переменую надо проверять используя $перед её именем, то есть if $checkip.
Дальше Вы забыли /system script run. Ну и так далее. Проверяйте синтаксис в терминале.

Re: Скрипт включения интерфейса и проверки канала

Добавлено: 15 сен 2020, 11:16
Aleksandr.Barilo

Код: Выделить всё

:local checkip [/ping 8.8.4.4 count=25]
:if (checkip = 0) do={
system script modem_no_money
}
Так вот такая конструкция как отдельный скрипт вполне работает .
Вот впихнуть туда включение интерфейсов до и выключение после не выходит

Re: Скрипт включения интерфейса и проверки канала

Добавлено: 15 сен 2020, 11:25
Sertik
Ну раз это у Вас работает, то пишите сами ... :-)
Зачем новичку укорачивать ? Писать скрипты нужно как следует, без сокращений.

Re: Скрипт включения интерфейса и проверки канала

Добавлено: 15 сен 2020, 19:24
podarok66
Я бы всё же не стал так явно задавать

Код: Выделить всё

/interface ethernet enable ether9
/interface pppoe-client enable 0
Лучше идти общепринятым способом, в вашем случае могут иметь место разночтения со стороны системы. Это приведёт отказу скрипта.

Код: Выделить всё

/interface ethernet set [find name=ether9] disabled=no
/interface pppoe-client set [find name=pppoe-out1] disabled=no
Идём далее, зачем такое количество пингов? 3-5 вполне показывают доступен ресурс или нет. Потом, есть очень старый, но действенный пошаговый механизм работы с данным выражением:

Код: Выделить всё

/interface ethernet set [find name=ether9] disabled=no;
/interface pppoe-client set [find name=pppoe-out1] disabled=no;
:local checkip [/ping 8.8.4.4 count=5] interface=pppoe-out1];
:delay 40;
:local Net false;
:set Net ($checkip >= 3);
:put "Net=$Net";
:if (!$Net) do={
 /interface pppoe-client set [find name=pppoe-out1] disabled=yes;
 /interface ethernet set [find name=ether9] disabled=yes
 }
Не знаю насчёт работоспособности, надо проверять, у меня тестового роутера под рукой нет. Посмотрите у себя и отпишитесь.