MikroTik Скрипты: Создать бэкап и отправить на почту

Cкрипт создает файл резервной копии «backup_file.backup» и отправляет его на электронный адрес, используя вызов функции «Отправить письмо» — SendEmailFunction.

Укажите параметры: SendTo, Subject, MessageText, FileName и Password, для корректной отправки письма.

Пример полученного электронного письма от устройства MikroTik, с файлом резервной копии
Пример полученного от устройства MikroTik письма с файлом бекапа

Статья на других языках:
?? — MikroTik Scripts: Create backup and send to email
?? — MikroTik Scripts: Cree una copia de seguridad y envía por correo electrónico
?? — Scripts MikroTik: Créer une sauvegarde et envoyer par e-mail
?? — MikroTik-Skripte: Erstellen Sie ein Backup und senden Sie es per E-Mail
?? — MikroTik-scripts: E-mail en bestand naar e-mail verzenden (functie)

Функция резервного копирования RouterOS позволяет сохранить текущую конфигурацию устройства, которую затем можно повторно применить на том же или другом устройстве (с тем же названием / номером модели). Это очень полезно, поскольку позволяет без труда восстанавливать конфигурации устройства или повторно применять ту же конфигурацию на устройстве резервного копирования. Файл резервной копии системы также содержит MAC-адреса устройства, которые также восстанавливаются при загрузке файла резервной копии.

wiki.mikrotik.com

Скрипт: Создание бэкапа и отправка на почту

[System] -> [Scripts] -> [+] -> [Name: CreateBackupAndSendEmail] -> [Policy: read, write, policy, test, sensitive]

Код скрипта:

#Variables
:local DeviceName [/system identity get name];
:local Date [/system clock get date];

:local SendTo "destination_mail@mail.com";
:local Subject "\F0\9F\93\A6 BACKUP: $DeviceName [$Date]";
:local MessageText "$DeviceName - device backup file ";
:local FileName "backup_file.backup";
:local Password "Pa$$Word";

# Main script code
/system backup save name=$FileName password=$Password
:local SendMail [:parse [/system script get SendEmailFunction source]];
$SendMail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
MikroTik Скрипты: Создать бэкап и отправить на почту

⚠️ Если вы не укажете параметр Password файл бэкапа не будет зашифрован. Все данные, включая данные скриптов (токен Telegram, пароль почты) будут доступны.

Если при выполнении скрипта вы получаете ошибку input does not match any value of file — в имени файла содержаться служебные символы, измените имя файла или экранируйте служебные символы MikroTik символом «\».

Добавить запуск скрипта в Планировщик

Для меня достаточно, если устройства будут делать резервную копию настроек 1 раз в неделю.

Для работы скрипта необходимо установить следующие разрешения: read, write, policy, test, sensitive.

[System] -> [Schedule] -> [+] -> [Name: CreateBackupAndSendEmail] - > [Interval: 7d 00:00:00] -> [Policy: read, write, policy, test, sensitive]

Код скрипта:

/system script run CreateBackupAndSendEmail
Добавление скрипта создание резервной копии в Планировщик MikroTik

? Скрипт создания бэкапа и отправка файла резервной копии на почту обсуждался в этой статье. Я надеюсь статья помогла автоматизировать вашу работу по созданию резервных копий устройств MikrotTik. Однако, если вы столкнетесь с каким-то проблемами при настройке, не стесняйтесь написать в комментариях. Я постараюсь помочь.

12 комментариев к “MikroTik Скрипты: Создать бэкап и отправить на почту”

  1. #Variables
    :local DeviceName [/system identity get name];
    :local Date [/system clock get date];
    :local Mouth {"jan"="01";"feb"="02";"mar"="03";"apr"="04";"may"="05";"jun"="06";"jul"="07";"aug"="08";"sep"="09";"oct"=10;"nov"="11";"dec"="12"}
    :local MyDate ([:pick $Date 4 6] . "." . ($Mouth -> [:pick $Date 0 3]) . "." .[:pick $Date 7 11]);

    :local FileName "Name_$MyDate";
    :local Password "Pa$$Word";
    :local SendTo "destination_mail@mail.com";
    :local Subject "\F0\9F\93\A6 BACKUP: $DeviceName [$Date] - $FileName";
    :local MessageText "$DeviceName - device backup file - $FileName";

    # Main script code
    /system backup save name=$FileName password=$Password
    :delay 10;

    /export file=$FileName;
    :delay 10;

    :local SendMail [:parse [/system script get SendEmailFunction source]];
    $SendMail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=($FileName . ".backup");
    $SendMail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=($FileName . ".rsc");
    :delay 10;

    /file remove [find name~$FileName]

    Ответить
    • Я надеюсь, что обладатель адреса destination_mail@mail.com не имеет пароля вида Pa$$Word.
      Но при этом новичку становится понятно что писать, чем когда он в первый раз видит запись, вида:
      :local SendTo "< mail >";

      Ответить
  2. Добрый день.
    На почту конечно хорошо, а можно ли отправку в телеграм сделать?
    Поискал по интернету, не нашел способа, но есть мнение, что пока это не реализуемо =(

    Ответить
      • Здорово, спасибо.
        И до кучи, как «грепать» адреса для добавления скриптом в список =)

        А то есть, например, список плохих адресов в таком виде:
        ; Spamhaus DROP List 2020/12/23 — (c) 2020 The Spamhaus Project
        ; https://www.spamhaus.org/drop/drop.txt
        ; Last-Modified: Wed, 23 Dec 2020 03:40:19 GMT
        ; Expires: Wed, 23 Dec 2020 04:46:20 GMT
        1.10.16.0/20 ; SBL256894
        1.19.0.0/16 ; SBL434604
        1.32.128.0/18 ; SBL286275
        2.56.192.0/22 ; SBL459831

        Как скриптом в цикле из него выдергивать по одному адресу и добавлять в black list…

        Ответить
        • У вас свой почтовый сервер за MikroTik?

          Разбор txt файла показан в скрипте «Массовое создание VPN пользователей из файла«. Отрезаем начало и начинаем парсинг с строки с данными.

          Если файл больше 4КБ, в ROS6 можно парсить через костыль fetch.

          Но, я переживаю за производительность устройства, если в Black List будут тысячи записей, следовательно в целесообразности написания такого скрипта, ведь в файле Спамхауса блокировка подсетями указывается.

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

        • Стало понятней.

          В случае Spamhaus блокировка адресов будет неэффективной, т.к. в списке адреса почтовых серверов спамеров. Т.е. к вашему домашнему микротику просто не будет обращения с этих адресов, т.к. они рассылают спам на почтовые сервера.

          DNS записи будут неэффективным, т.к. это блокирует возможности вашего пк открывать адреса рекламных сетей, а не веб страницам показывать вам рекламу.

          Вообще микротик может заблокировать передачу данных с рекламных сетей, проблема в том, что вы можете заблокировать белые(известные) рекламные сети гугла, яндекса и пр. и на легальных сайтах рекламы не станет.
          Но вот самая «мусорная» и раздражающая реклама, идет с мелких сетей, которые постоянно появляются новые или изменяют адреса. Т.е. борьба «вручную» может быть вечной.
          Эффективней использовать блокировщики рекламы в браузерах.

          Про блокировку вредоносных IP, будет немного в следующей статье, про настройку защиты устройства MikroTik, которую я неделю уже пытаюсь оформить.

          Сказанное выше моё мнение, не навязанное как единственно правильное. «My Life Firewall — My Rules!» 🙂

Оставьте комментарий