Отправка писем из МТ при падении линка

В первую очередь настраиваем почту. В большинстве статей рекомендуют gmail — у меня через него письма не слались. Яндекс тоже молчал. Сходу взлетел rambler без шифрования. В System -> E-mail вбиваем следующие настройки.
7

Далее потребуется два скрипта — один проверяет наличие интернета на нужном ифейсе, второй непосредственно шлет. Почему так? что бы при отвале приходило одно письмо, а не каждую минуту.

Для начала добавим роут до определенного хоста (в моем случае это DNS яндекса) через нужный шлюз. IP -> Route -> Add.

Скрипт первый — проверочный. Обзовем его check.

 

:global otprav;
:if ([/ping 77.88.8.8 count=3] > 0) do= {
:set otprav 0;
} else= {
/system script run mail_if_down;
}

Задаем глобальную переменную на оба скрипта (проверка, высылалось ли письмо или нет).
Затем проверяем доступность яндекса. Если доступен — меняем переменную, если нет — переходим ко второму скрипту.
Назовем mail_if_down:

:global email;
:global phone;
:global otprav;
:if ($otprav > 0) do= {
:log info "Link down. Mail allready sent";
} else= {
/tool e-mail send to=$email subject=([/system identity get name] . " Link down at " . [/sys cl get time] . " " . [/system clock get date]);
/tool sms send port=usb1 channel=1 phone-number=$phone message=([/system identity get name] . " Link down at " . [/sys cl get time] . " " . [/system clock get date]);
:log info ("Link down. Reported at " . [/sys cl get time] . " " . [/sys cl get date]);
:set otprav 2;
}

Подключаем переменную.
Затем смотрим — если переменная 1 (т.е. писмо уже отправлялось), то просто пишем лог. Если переменная 0, то шлем письмо на почту и смс. В строчке с смс не забываем указать нужный USB, channel и номер, куда шлем.
Затем пишем в лог и ставим переменную 1, что бы не слалась почта постоянно.

Скрипт mail_if_up

:global email;
:global phone;
:global otprav;
tool e-mail send to=$email subject=([/system identity get name] . " Link up at " . [/sys cl get time] . " " . [/system clock get date])
/tool sms send port=usb1 channel=1 phone-number=$phone message=([/system identity get name] . " Link up at " . [/sys cl get time] . " " . [/system clock get date]);
:log info ("Link up. Reported at " . [/sys cl get time] . " " . [/sys cl get date]);
:set otprav 0;

И последнее — добавляем в расписание. System -> Scheduler -> Add. Start time ставим startup и нужные интервалы (у меня минута). On event пишем называние первого скрипта (check).

Все, теперь каждую минуту проверяется доступность внешнего ресурса через заданый гейтвей и в случае падения линка уйдет сообщение на почту и смс.

Добавить комментарий