В 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