Форум OlegON > Компьютеры и Программное обеспечение > Сеть > Сетевое оборудование > MikroTik

Создание уведомления об изменении статуса интерфейса : MikroTik

22.02.2025 18:20


12.02.2025 18:12
В Mikrotik есть замечательная утилитка Netwatch, которой можно мониторить состояние хостов в сети. Единственный недостаток этой утилитки - она основана на том, что хост должен отвечать на ping запрос. И не все хосты это делают. Но у меня задача была достаточно простая, мне живость хоста достаточно было определить по статусу линка на интерфейсе. Выключенный хост его опускал, включенный - поднимал. Сначала было пытался присвоить адрес интерфейсу и его пинговать, но он пинговался, независимо от статуса интерфейса.

Соответственно мне понадобился скрипт, который запоминает статус интерфейса и алертит, если интерфейс меняет статус. Скрипт ниже, его нужно оформить именно в System-Scripts под именем host_link (или какое-то другое, главное, не забудьте указать именно его потом в назначенных заданиях)

Код:
:global prevStatus
:local interfaceName "имя интерфейса"
:local currentStatus [/interface get $interfaceName running]
:if ([:typeof $prevStatus] = "nil") do={
    :global prevStatus $currentStatus
}
:if ($currentStatus != $prevStatus) do={
    :if ($currentStatus = true) do={
        /tool fetch mode=https url="https://olegon.ru/alert.php"  http-method=post  http-data="to_admin=Host%20on" keep-result=no
    } else={
	/tool fetch mode=https url="https://olegon.ru/alert.php"  http-method=post  http-data="to_admin=Host%20off" keep-result=no
    }
    :global prevStatus $currentStatus
}
и добавить в назначенные задания задание (у меня раз в минуту)
Код:
/system scheduler add name="check_host_link" start-time=startup interval=1m on-event=host_link
Часовой пояс GMT +3, время: 18:20.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.