В очередной раз фирма MikroTik порадовала нас своим новшеством, а именно — возможностью подавать POE-питание на локальные порты устройства с током потребления до 500 мА на порт.
Рис.1. Interface List.
В этой статье мы рассмотрим, как используя данную возможность сделать перезагрузку зависшего устройства, подключенного и получающего питание от RB750UP.
Бывают редкие ситуации, когда то или иное оборудование в силу то ли программной несовершенности, то ли от еще каких-либо причин перестаёт отвечать на запросы и не выполняет возложенных на него задач. В таких ситуациях приходится просто перезагружать данное устройство по питанию.
А что делать, если нет возможности постоянно «мониторить» такие устройства вручную, но и отказаться от них тоже нет возможности?
Допустим, что к нашему MikroTik-у подключено одно такое устройство.
192.168.88.1 — локальный адрес MikroTik (по умолчанию);
192.168.88.100 — наше устройство (находится в нашей локальной сети) подключено к 4-му порту (ether4-slave-local).
Создадим скрипт:
Рис.2. Script List.
Имя скрипта PING_TEST_POE
:local PINGCOUNT 5;
:local PINGIP "192.168.88.100";
:local POEINTERFACE "ether4-slave-local";
:log info message="PINGTEST START";
:local PINGRESULT [/ping $PINGIP count=$PINGCOUNT];
:if ($PINGRESULT > 0) do={
:log info message="PINGTEST OK";
} else={
:log info message="PINGTEST $POEINTERFACE POE OFF";
/interface ethernet set ether4-slave-local poe-out=off;
:delay 10;
:log info message="PINGTEST $POEINTERFACE POE ON";
/interface ethernet set ether4-slave-local poe-out=on;
:delay 10;
}
:log info message="PINGTEST END";
Создаём переменные и присваиваем им значения
:local - имя переменной, значение;
:local PINGCOUNT 5; - количество посылаемых пингов;
:local PINGIP "192.168.88.100"; - адрес нашего устройства;
:local POEINTERFACE "ether4-slave-local"; - интерфейс, на котором мы будем управлять питанием;
:log info message="PINGTEST START"; - пишем в лог PINGTEST START;
:local PINGRESULT [/ping $PINGIP count=$PINGCOUNT]; - пингуем наш адрес и результат заносим в переменную PINGRESULT;
:if ($PINGRESULT > 0) do={ - анализируем переменную PINGRESULT, если отсутствуют ошибки, то пишем в лог:
:log info message="PINGTEST OK"; PINGTEST OK
} else={ - если наше устройство не отвечает, то:
:log info message="PINGTEST $POEINTERFACE POE OFF"; - пишем в лог PINGTEST $POEINTERFACE POE OFF и...
/interface ethernet set ether4-slave-local poe-out=off; - выключаем POE для нашего устройства (на 4-м порту)
:delay 10; - выжидаем 10 секунд;
:log info message="PINGTEST $POEINTERFACE POE ON"; - пишем в лог PINGTEST $POEINTERFACE POE ON и...
/interface ethernet set ether4-slave-local poe-out=on; - включаем POE для нашего устройства (на 4-м порту)
:delay 10; - выжидаем 10 секунд, поскольку включение POE происходит не сразу
}
:log info message="PINGTEST END"; - пишем в лог PINGTEST END
Если мы запустим скрипт, то увидим, что скрипт будет оставлять информацию в лог:
Если устройство функционирует нормально:
Рис.3. Устройство функционирует нормально.
Если оно не отвечает на пинги:
Рис.4. Устройство не отвечает на пинги.
Ну и для достижения состояния «полной автоматизации» нам нужно, чтобы скрипт запускался периодически и проверял наше устройство. Для этого обратимся к планировщику (System-Scheduler).
Рис.5. Планировщик.
Итак, что мы видим:
Name - наглядное имя задачи;
Interval -период в 10 мин (ЧЧ:ММ:СС);
On Event: «/system script run PING_TEST_POE» - собственно выполняемое действие, запуск нашего скрипта.
Сергей Бражник специально для ASP24.





