Backup настроек на почту

Здесь выкладываем скрипты
Аватара пользователя
podarok66
Модератор
Сообщения: 3824
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

09 авг 2017, 22:36

Если прикреплять просто пару-тройку файлов, то можно обойтись перечислением их через запятую

Код: Выделить всё

{:local adr "username@gmail.com";
:local pass  "password";
:local serv  [:resolve "smtp.gmail.com"];
tool e-mail send from=$adr to=$adr server=$serv port=587 start-tls=yes user=$adr password=$pass file=file.ca,file.crt,file.key subject=MyFile body=MyFile }


Для скрипта пойдет что-то типа:

Код: Выделить всё

{
:log info "Starting Backup Script...";

:local sysname [/system identity get name];
:local sysver [/system package get system version];

:log info "Flushing DNS cache...";

/ip dns cache flush;
:delay 2;

:log info "Deleting last Backups...";

:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] "$sysname-backup-"]]!="nil") do={/file remove $i}};

:delay 2;

:local smtpserv [:resolve "smtp.gmail.com"];

:local Eaccount "username@gmail.com";
:local pass "password";

:local backupfile ("$sysname-backup-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".backup");
:log info "Creating new Full Backup file...";
/system backup save name=$backupfile;
:delay 5;

:local exportfile ("$sysname-backup-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".rsc");
:log info "Creating new Setup Script file...";
/export file=$exportfile;

:delay 5;

:log info "Sending Setup Script file and Full Backup file via E-mail...";

/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv port=587 user=$Eaccount password=$pass start-tls=yes file="$backupfile,$exportfile" subject=("$sysname Setup Script Backup (" . [/system clock get date] . ")") body=("$sysname Setup Script file see in attachment.
RouterOS version: $sysver
Time and Date stamp: " . [/system clock get time] . " " . [/system clock get date]);

:delay 30;

:log info "All System Backups emailed successfully.
Backuping completed.";

}

Проверяйте, у меня на тестовом прогоне отработало нормально.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
mrrc
Сообщения: 110
Зарегистрирован: 03 авг 2016, 22:33

09 авг 2017, 22:46

Да-да, все верно, задаваемые переменные в file= нужно окружать либо скобками, либо кавычками, в этом было дело, спасибо.


hippelalex
Сообщения: 2
Зарегистрирован: 01 янв 2018, 23:36

02 янв 2018, 00:02

seventh писал(а):Я просто оставлю это здесь.


Спасибо за скрипт!
Сначала все работало нормально. Но в какой то момент скрипт перестал отрабатывать. :(
Внутри, кроме значений to= и subject= Ничего не менялось!

Опытным путем было выяснено, что скрипт не работает с значением body=
Если его убрать, все работает нормально.

Мне этот скрипт нравился как раз своим "телом письма" :)

Большой скрипт из темы (с настройками на Яндекс сервера) тоже пробовал. Та же фигня :(

Ручная отправка в терминале проходит.
Отправка через Tools -> Email -> Send Email тоже проходит нормально.

Данные моего MikroTik:

Код: Выделить всё

uptime: 3w2d9h22m56s                                                           
                  version: 6.40.5 (stable)                                                       
               build-time: Oct/31/2017 13:05:15                                                   
         factory-software: 6.28                                                                   
              free-memory: 36.6MiB                                                               
             total-memory: 64.0MiB                                                               
                      cpu: MIPS 24Kc V7.4
                cpu-count: 1
            cpu-frequency: 850MHz
                 cpu-load: 1%
           free-hdd-space: 4.8MiB
          total-hdd-space: 16.0MiB
  write-sect-since-reboot: 689
         write-sect-total: 11096
               bad-blocks: 0%
        architecture-name: mipsbe
               board-name: hEX lite
                 platform: MikroTik


А вот скрипт с Хабрахабра:

Код: Выделить всё

#:log info "///----> Я начал бэкапиться" (расскоменчиваю эти строки для дебага)
:global backupfile ([/system identity get name]. ".backup") #задаю переменную
:if ([/file find name=$backupfile] != "") do={/file rem $backupfile} #удаляю, если файл уже существует
:delay 2s

#:log info "///----> Подготавливаю лог для отправки"

:global logMessages;
:set logMessages ""
:foreach i in=[/log find ] do={
:set logMessages ($logMessages. [/log get $i time ]. " ");
:set logMessages ($logMessages. [/log get $i message ]);
:set logMessages ($logMessages. "\n")
}

#:log info "///----> Создаю бэкап"
/system backup save name=$backupfile
#:log info "///----> Жду 5 сек. завершения процедуры"
:delay 5s
#:log info "///----> Посылаю конфиг на e-mail" (следующий код — одна длинная строка!)
/tool e-mail send to=mail@examle.com subject=(«router daily backup») file=$backupfile body=(«Бэкап конфигурационного файла маршрутизатора ». [/system identity get name]. ". \nВыполнен: ". [/system clock get time]. " ". \ [/system clock get date]. " \n____________________\n \nUptime: ". [/system resource get uptime]. "\nСвободно оперативки: ". [/system resource get free-memory]. " из ". [/system resource get total-memory]. " Кбайт. \nСвободное место: ". [/system resource get free-hdd-space]. " из ". [/system resource get total-hdd-space]. " Кбайт. \nBad-блоки: ". [/system resource get bad-blocks]. " %. \nЗагрузка процессора на данный момент: ". [/system resource get cpu-load]. " % \n____________________\n \nПоследние записи в логе: \n \n". $logMessages. " \n____________________ \n". [/system identity get name])

#:log info "///----> Жду 10 сек. пока письмо отправится"
:delay 10s
/file remove $backupfile
:log info "///----> Бэкап завершён. Файл послан на mail@example.com. Ура!"


enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

02 янв 2018, 00:58

Такое работает второй год уже без изменений
Нужно изменить почту и пароль от аккаунта, ну и почтовый сервер если есть необходимость

Код: Выделить всё

{
:log info "Starting Backup Script...";
:local sysname [/system identity get name];
:local sysver [/system package get system version];
:log info "Flushing DNS cache...";
/ip dns cache flush;
:delay 2;
:log info "Deleting last Backups...";
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] \
"$sysname-backup-"]]!="nil") do={/file remove $i}};
:delay 2;
:local smtpserv [:resolve "smtp.yandex.ru"];
:local Eaccount "your@mail.account";
:local pass "password";
:local backupfile ("$sysname-backup-" . \
[:pick [/system clock get date] 7 11] . [:pick [/system \
clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".backup");
:log info "Creating new Full Backup file...";
/system backup save name=$backupfile;
:delay 2;
:log info "Sending Full Backup file via E-mail...";
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv \
port=587 user=$Eaccount password=$pass start-tls=yes file=$backupfile \
subject=("$sysname Full Backup (" . [/system clock get date] . ")") \
body=("$sysname full Backup file see in attachment.\nRouterOS version: \
$sysver\nTime and Date stamp: " . [/system clock get time] . " " . \
[/system clock get date]);
:delay 5;
:local exportfile ("$sysname-backup-" . \
[:pick [/system clock get date] 7 11] . [:pick [/system \
clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".rsc");
:log info "Creating new Setup Script file...";
/export verbose file=$exportfile;
:delay 2;
:log info "Sending Setup Script file via E-mail...";
/tool e-mail send from="<$Eaccount>" to=$Eaccount server=$smtpserv \
port=587 user=$Eaccount password=$pass start-tls=yes file=$exportfile \
subject=("$sysname Setup Script Backup (" . [/system clock get date] . \
")") body=("$sysname Setup Script file see in attachment.\nRouterOS \
version: $sysver\nTime and Date stamp: " . [/system clock get time] . " \
" . [/system clock get date]);
:delay 5;
:log info "All System Backups emailed successfully.\nBackuping completed.";
}


hippelalex
Сообщения: 2
Зарегистрирован: 01 янв 2018, 23:36

05 янв 2018, 11:35

Спасибо, enzain. В вашем скрипте нет ничего сложного в =body. У меня тоже первый вариант скрипта работает нормально. Но без параметра =body :(
Что то в нем не нравится Микротику. Он просто останавливает скрипт и все. Разбираться смысла и времени нет, ИМХО. Бэкап приходит исправно. А все данные по загрузке и лог я смотрю через Winbox удаленно.
Просто стало интересно, почему перестало работать :)


felcons
Сообщения: 11
Зарегистрирован: 16 янв 2018, 10:24

22 янв 2018, 13:16

Хоорошее решение было в сообщении
viewtopic.php?p=37418#p37418
А на сколько реально в тот же лог или как-то в сообщении добавить статистику по использовани трафика.
Тоесть сколько было внутреннего трафика, и сколько было интернетовского трафика, как входного, так и выходного?
Или микротик считать трафик не умеет и то будет не реально?


Аватара пользователя
podarok66
Модератор
Сообщения: 3824
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

22 янв 2018, 22:02

Микротик - это не биллинг, поэтому подсчет тут чисто черновой. Типа сколько трафика прошло через интерфейс. Задавайте переменную на интересующем вас интерфейсе и снимайте:
1. Просто число байт, прошедших через интерфейс. Зато чисто числовой вариант, можно производить математические действия.

Код: Выделить всё

 [/interface get ether5 rx-byte]
 [/interface get ether5 tx-byte]

2. Выдает переменную непонятного типа, зато с пробелами через три цифры, очень хорошо зрительно воспринимается. Действия производить не получится.

Код: Выделить всё

[interface ethernet get ether5 rx-bytes]
[interface ethernet get ether5 tx-bytes]


Прикручивайте и отсылайте. Смысла большого не вижу. Так, баловство.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

22 янв 2018, 22:25

podarok66 писал(а):Микротик - это не биллинг, поэтому подсчет тут чисто черновой. Типа сколько трафика прошло через интерфейс. Задавайте переменную на интересующем вас интерфейсе и снимайте:
1. Просто число байт, прошедших через интерфейс. Зато чисто числовой вариант, можно производить математические действия.

Код: Выделить всё

 [/interface get ether5 rx-byte]
 [/interface get ether5 tx-byte]

2. Выдает переменную непонятного типа, зато с пробелами через три цифры, очень хорошо зрительно воспринимается. Действия производить не получится.

Код: Выделить всё

[interface ethernet get ether5 rx-bytes]
[interface ethernet get ether5 tx-bytes]


Прикручивайте и отсылайте. Смысла большого не вижу. Так, баловство.


Ну так типа есть ip accounting
только не видел чтобы кто пользовался....
Не приходилось?


Аватара пользователя
podarok66
Модератор
Сообщения: 3824
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

22 янв 2018, 22:27

Я точно не юзал. Вы у vqd спросите, тот больше нашего знает.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
felcons
Сообщения: 11
Зарегистрирован: 16 янв 2018, 10:24

26 янв 2018, 11:28

сильно ногами не пинайте.
в код скрипта вставил вот те две строки
 [/interface get ether5 rx-byte]
 [/interface get ether5 tx-byte]
ставил там где уже body, где тело письма, и скрипт вообще отказался работать.
В телнете пробовал вводить те строки то данных никаких не выдавалось.


Ответить