Еще один вариант уведомления устройствами MikroTik — отправка уведомлений на электронную почту.
Для настройки вам понадобится параметры SMTP вашего почтового сервера. Если сервер почты использует двухфакторную авторизацию, используйте ключ приложения вместо пароля (обычно указан в справке).
? Если у вас есть IP адрес SMTP сервера и он не изменяется, укажите его в параметре server. Если у вас есть доменное имя SMTP сервера с динамическим IP, разрешите MikroTik преобразовывать доменное имя в IP адрес, используя конструкцию [:resolve «smtp.mail.com»].
Статья на других языках:
?? — MikroTik Scripts: Sending Notifications and Files to Email
?? — Scripts MikroTik: Envío de notificaciones y archivos por correo electrónico
?? — Scripts MikroTik: envoi de notifications et de fichiers par courrier électronique
?? — MikroTik-Skripte: Senden von benachrichtigungen und daten an E-mails
?? — MikroTik-scripts: e-mail en bestand naar e-mail verzenden (functie)
Отправить письмо из MikroTik (простой вариант)
Скрипт отправки письма и вложенного файла на указанную почту.
Скрипт в одну строку:
/tool e-mail send to=destination_mail@mail.com server=[:resolve "smtp.mail.com"] port=465 start-tls=tls-only user="source mail@mail.com" password="Password" from="source mail@mail.com" subject="Subject" body="Simple Text" file="file_for_send.txt"
Скрипт в несколько строк (лучшая читаемость):
/tool e-mail send to=destination_mail@mail.com \
server=[:resolve "smtp.mail.com"] port=465 start-tls=tls-only \
user="source mail@mail.com" password="Password" from="source mail@mail.com" \
subject="Subject" body="Simple Text" \
file="file_for_send.txt"
Отправить письмо из MikroTik (функция)
Если вы используете отправку почтовых уведомлений из множества скриптов, я рекомендую разделить скрипт на функцию «Отправить письмо» и скрипт «Вызвать функцию отправить письмо».
? Внимание: в RouterOS v7 изменился синтаксис параметра tls, поэтому здесь размещаются две версии функции.
Функция «Отправить письмо» для RouterOS v7
Создаем скрипт:
[System] -> [Scripts] -> [+] -> [Name: SendEmailFunction] -> [Policy: Don't require permissions]
Код скрипта:
# Variables
:local SendFrom "source_mail@mail.com";
:local PasswordMail "Password";
:local SmtpServer [:resolve "smtp.mail.com"];
:local UserName "source_mail@mail.com";
:local SmtpPort 465;
:local UseTLS "yes";
# Main script code
/tool e-mail send to=$SendTo server=$SmtpServer port=$SmtpPort tls=$UseTLS user=$SendFrom password=$PasswordMail from=$SendFrom subject=$Subject body=$TextMail file=$FileName;
Функция «Отправить письмо» для RouterOS v6
Создаем скрипт:
[System] -> [Scripts] -> [+] -> [Name: SendEmailFunction] -> [Policy: Don't require permissions]
Код скрипта:
# Variables
:local SendFrom "source_mail@mail.com";
:local PasswordMail "Password";
:local SmtpServer [:resolve "smtp.mail.com"];
:local UserName "source_mail@mail.com";
:local SmtpPort 465;
:local UseTLS "tls-only";
# Main script code
/tool e-mail send to=$SendTo server=$SmtpServer port=$SmtpPort start-tls=$UseTLS user=$SendFrom password=$PasswordMail from=$SendFrom subject=$Subject body=$TextMail file=$FileName;
Вызов функции «Отправить письмо»
Вызываем функцию с именем SendEmailFunction из скрипта SendEmailCall.
Создаем новый скрипт SendEmailCall:
[System] -> [Scripts] -> [+] -> [Name: SendEmailCall] -> [Policy: read, write, policy, test]
Укажите параметры для передачи в главную функцию:
- SendTo — адрес отправки почты;
- Subject — тема письма;
- MessageText — текст письма;
- FileName — имя файла (необязательный параметр).
Код скрипта:
# Variables
:local DeviceName [/system identity get name];
:local Time [/system clock get time];
:local Date [/system clock get date];
:local SendTo "destination_mail@mail.com";
:local Subject "\F0\9F\9F\A2 INFO: $DeviceName [$Date $Time]";
:local MessageText "This informational message indicates the successful execution of the script on device $DeviceName";
:local FileName "some_file.txt";
# Main script code
:local SendEmail [:parse [/system script get SendEmailFunction source]];
$SendEmail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
? Как отправить письмо или файл с устройства MikroTik обсуждалось в этой статье. Я надеюсь, что теперь вы сможете отправлять уведомления с устройств MikroTik c помощью электронной почты. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.
На микротик настроен ftp (диск подключен через usb роутера), на этом диске имеется папка «ftpcam», в которой ip камера создаёт папку каждый день при детекции движения (ftp:/192.168.0.1/ftpcam/yyyy_mm_dd/files.jpg). Вопрос вот в чем, можно ли отправлять на почту в реальном времени вновь появляющиеся файлы в папке yyyy_mm_dd которая, конечно же, будет меняться каждый день?
не исправляя SendEmailFunction, как отправить сообщение в SendEmailCall без вложенного файла (FileName=$FileName).
Зачем эта «борода» в Subject \F0\9F\9F\A2
Код эмодзи, позволяет сделать письма более различимыми по темам (например знаки: внимание, важно и т.д.)
Похоже, теперь для отправки файлов нужно добавить для SendEmailCall полиси sensitive. Иначе не отправляется. Без параметра файла — да, с указанием файла — нет. Кучу времени на это потратил, пытаясь понять где в трех строчках простого кода ошибка.
Вот этим бесит микрот, хоть бы где-нибудь ошибку выдавал, что прав скрипту не хватает. =(
А вам за скрипты спасибо!
Важное замечание: password тут — регулярное выражение, если у вас, например, пароль 123$ то надо ввести 123\$
Интересное замечание Vadim, большое спасибо, нужно проверить.
Добрый день, можете помочь со скриптом опроса физики на порту. Суть задачи в следующем, на порту висит обычный свитч, соответственно пингать его я не могу, потому что за ним ничего нет. Его роль только поднимать физику, мне нужно оповещение в почту настроить по события в логах, когда будет событие ether5 link down
Здравствуйте, объясните по «роль поднимать физику», может получится предложить решение лучше, чем скрипт проверяющий состояние интерфейса по времени.