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

Далее потребуется два скрипта — один проверяет наличие интернета на нужном ифейсе, второй непосредственно шлет. Почему так? что бы при отвале приходило одно письмо, а не каждую минуту.
Для начала добавим роут до определенного хоста (в моем случае это 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).
Все, теперь каждую минуту проверяется доступность внешнего ресурса через заданый гейтвей и в случае падения линка уйдет сообщение на почту и смс.
Posted in: