Срипт бекапа выдает ошибки

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Ответить
maxim_minton
Сообщения: 57
Зарегистрирован: 14 фев 2017, 10:18

Срипт бекапа выдает ошибки

Сообщение maxim_minton » 24 фев 2017, 21:07

Собственно в сети нашел скрипт бекапа настроек роутера на НАС, но при запуске он выдает ошибки, если кто знает буду благодарен за их решение.

Собственно сам скрипт:

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

# months array
:local months ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");

# get time
:local ts [/system clock get time]
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])

# get Date
:local ds [/system clock get date]
# convert name of month to number
:local month [ :pick $ds 0 3 ];
:local mm ([ :find $months $month -1 ] + 1);
:if ($mm < 10) do={ :set mm ("0" . $mm); }
# set $ds to format YYYY-MM-DD
:set ds ([:pick $ds 7 11] . $mm . [:pick $ds 4 6])

# file name for user manager backup - file name will be UMDB-servername-date-time.umb
:local fname ("/UMDB-".[/system identity get name]."-".$ds."-".$ts.".umb")
# file name for system backup - file name will be UMDB-servername-date-time.backup
:local fname1 ("/UMDB-".[/system identity get name]."-".$ds."-".$ts.".backup")
# file name for config export - file name will be UMDB-servername-date-time.rsc
:local fname2 ("/UMDB-".[/system identity get name]."-".$ds."-".$ts.".rsc")

# backup the data
/tool user-manager database save name=$fname
:log info message="User manager backup finished (1/3).";
/system backup save name=$fname1
:log info message="System backup finished (2/3).";
/export compact file=$fname2
:log info message="Config export finished (3/3)."

# upload the user manager backup
:log info message="Uploading user manager backup (1/3)."
/tool fetch address="$ftphost" src-path=$fname user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname" upload=yes
# upload the system backup
:log info message="Uploading system backup (2/3)."
/tool fetch address="$ftphost" src-path=$fname1 user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname1" upload=yes
# upload the config export
:log info message="Uploading config export (3/3)."
/tool fetch address="$ftphost" src-path=$fname2 user="$ftpuser" mode=ftp password="$ftppassword" dst-path="$ftppath/$fname2" upload=yes

# delay time to finish the upload - increase it if your backup file is big
:delay 60s;
# find file name start with UMDB- then remove
:foreach i in=[/file find] do={ :if ([:typeof [:find [/file get $i name] "UMDB-"]]!="nil") do={/file remove $i}; }
:log info message="Configuration backup finished.";

Выдает такие ошибки:

Изображение

Аватара пользователя
Chupaka
Сообщения: 988
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Срипт бекапа выдает ошибки

Сообщение Chupaka » 25 фев 2017, 02:58

:local - объявление локальной переменной в данной области видимости. Если вставлять скрипт напрямую в Терминал, то каждая строчка обрабатывается как отдельный скрипт, поэтому для следующей строчки уже не существует никаких локальных переменных, объявленных в предыдущей строке. Для корректной отработки необходимо обрамлять скрипт фигурными скобками: набрать "{", вставить скрипт (из буфера обмена), набрать "}", нажать Enter - скрипт целиком исполнится

maxim_minton
Сообщения: 57
Зарегистрирован: 14 фев 2017, 10:18

Re: Срипт бекапа выдает ошибки

Сообщение maxim_minton » 25 фев 2017, 09:59

Поставил скобки, нашло ошибку в другом месте:

ИзображениеИзображение

{... /tool user-manager database save name=$fname

Вот эта строка по ходу не нравиться ему

Аватара пользователя
Chupaka
Сообщения: 988
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Срипт бекапа выдает ошибки

Сообщение Chupaka » 25 фев 2017, 18:24

Могу предположить, что User Manager не установлен на роутере, поэтому такой команды не существует

maxim_minton
Сообщения: 57
Зарегистрирован: 14 фев 2017, 10:18

Re: Срипт бекапа выдает ошибки

Сообщение maxim_minton » 25 фев 2017, 22:33

Мда, Вы оказались правы.

А можно ли как то скриптом сделать, чтоб на НАСе сначала делалась соответствующая папка (допустим названием которой была бы дата бекапа), а в нее уже ложились бы соответствующие файлы?

Аватара пользователя
Chupaka
Сообщения: 988
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Срипт бекапа выдает ошибки

Сообщение Chupaka » 26 фев 2017, 02:46

Можно вручную проверить, создаёт ли /tool fetch на FTP-сервере папки для закачиваемых файлов. Если нет - то увы. Отдельной команды для создания папок я не вижу. Как, впрочем, и смысла создавать отдельную папку для двух файлов :)

Ответить