автобэкап на email

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Аватара пользователя
bear
Сообщения: 127
Зарегистрирован: 03 мар 2016, 18:39

автобэкап на email

Сообщение bear »

привет

есть простой скрипт:

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

:log info "starting weekly backup";
/system backup save name=4011_Weekly;
:delay 00:00:05
/export file=4011_Weekly;
:delay 00:00:05
/system package print file=4011_Version.txt;
:delay 00:00:05
/tool e-mail send file=4011_Weekly.backup,4011_Weekly.rsc,4011_Version.txt to="[email protected]" subject="Mikrotik 4011 weekly backup" body="Mikrotik 4011 backup, script and version files attached, $[/system clock get date] at $[/system clock get time]";
:log info "weekly backup script completed";
без проблем отрабатывает в консоли, но не хочет работать в скриптах
даже первый файл не создаёт

подскажите пожалуйста, в чём ошибка?

Изображение


upd:
сам дурак
забыл дать права на запись
всё работает теперь
Аватара пользователя
bear
Сообщения: 127
Зарегистрирован: 03 мар 2016, 18:39

Re: автобэкап на email

Сообщение bear »

руки чешутся, приключения продолжаются :-))
собираю следующую версию скрипта

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

:log info "starting weekly backup...";

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

:log info "deleting last backups...";
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] "$sysname"]]!="nil") do={/file remove $i}};
:delay 2

:log info "flushing DNS cache...";
/ip dns cache flush;
:delay 2

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

:log info "creating script file...";
:local exportfile ("$sysname". [:pick [/system clock get date] 7 11].[:pick [/system clock get date] 0 3].[:pick [/system clock get date] 4 6].".rsc");
/export file=$exportfile;
:delay 2

:log info "sending backup and script files to e-mail...";
/tool e-mail send file=$backupfile,$exportfile [email protected] subject="Mikrotik 4011 weekly backup" body="Mikrotik backup and script files attached \nRouterOS version: $sysver \n$[/system clock get date] at $[/system clock get time]";
:delay 5

:log info "...weekly backup script completed";
возникшие проблемы:
1. "deleting last backups" удаляет вообще все файлы
2. "creating script file" не создаёт rsc-файл
3. полученный backup-файл не цепляется к письму
4. в письмо не записывается переменная sysver

подскажите пожалуйста, где я ошибаюсь?
Аватара пользователя
bear
Сообщения: 127
Зарегистрирован: 03 мар 2016, 18:39

Re: автобэкап на email

Сообщение bear »

продолжаю монолог :-)

остановился на таком варианте скрипта:

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

{
:log info "starting backup process...";

: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 latest backups...";
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] "$sysname-"]]!="nil") do={/file remove $i}};
:delay 2;

:log info "creating backup file...";
:local backupfile ("$sysname-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . "-v$sysver" . ".backup");
/system backup save name=$backupfile;
:delay 2;

:log info "creating script file...";
:local exportfile ("$sysname-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . "-v$sysver" . ".rsc");
/export file=$exportfile;
:delay 2;

:local files {$exportfile;$backupfile};

:log info "sending files via email...";
/tool e-mail send [email protected] file=$files subject=("$sysname 4011 backup (" . [/system clock get date] . ")") body=("$sysname backup files are in the attachment.\nRouterOS version: $sysver\nTime and Date: " . [/system clock get time] . " " . [/system clock get date]);
:delay 3;

:log info "...system backup completed";
}
скрипт полностью рабочий, только сначала не забудьте настроить Tools->Email и заменить в скрипте адрес на свой


единственная проблема, которую не могу решить - как прицепить два вложения к письму?
сейчас приходится два письма слать
если знать точно имена файлов и подставлять их в атачмент (как в самом первом скрипте), то можно отсылать письмо с несколькими вложениями, а вот с вложениями в виде переменных так не получилось

upd:
подправил скрипт
теперь всё ок, письмо только одно и к нему цепляются оба файла