Отправка писем из МТ при падении линка
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: