Микротик - отличная штука, чего и говорить. Многие мои знакомые по моей рекомендации купили себе эти роутеры. Настройку их, конечно же, поручали мне, т.к. самое сложное, что они максимум видели до этого - это прошивка для роутеров ASUS "от энтузиастов" (к слову, тоже очень милая вещь, но сейчас не об этом), ну а по сравнению с ней процедура настройки микротика выглядит для таких людей каким-то диким колдунством. Некоторые из вышеуказанных знакомых так и пользуются роутером в том виде, в котором я им его настроил (либо просят внести какие-либо изменения меня, что я делаю удаленно), иные же пытаются вносить изменения в настройки и экспериментировать самостоятельно. Последнее весьма похвально, но иногда приводит к неприятным последствиям. Впрочем, даже если пользователь ничего не правит в настройках роутера, никто не защищен от ситуаций, из-за которых роутер может прийти в негодность (примеров можно придумать массу). Для минимизации возможных неприятных последствий я написал скрипт, который каждый день создает бэкап и заливает его на мой FTP-сервер.
Исходник скрипта на github
Первые четыре строки задают переменные, касающиеся того, что именно и как бэкапить:
saveUserDB - бэкапить ли базу User Manager'a
saveSysBackup - сохранять ли системный бэкап (аналогично тому, который создается по команде /system backup save в консоли)
encryptSysBackup - шифровать ли системный бэкап (поддерживается начиная с RouterOS 6.13)
saveRawExport - сохранять ли бэкап всей конфигурации в "читабельном" виде (.rsc-скрипт)
Следующие четыре строки описывают настройки для подключения к FTP и вряд ли нуждаются в комментировании.
По дополнительным просьбам сделал аналогичный скрипт, отсылающий бэкап на e-mail вместо заливки по FTP. Правда, ввиду ограничений RouterOS, каждый файл из бэкапа отправляется только отдельным письмом (т.е. получается до трех писем за один раз).
Исходник на github
Настройки аналогичны первому скрипту, разве что нужно задать в переменной mailTo адрес, на который будут отправляться бэкапы.
Если вы планируете использовать скрипт, отправляющий резервные копии на почту, обязательно сначала задайте настройки отправки почты (подробно можно почитать в Mikrotik Wiki)
После добавления скрипта (допустим, мы его назвали "backup-script"), необходимо добавить задание в планировщик:
Исходник скрипта на github
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:local saveUserDB true | |
:local saveSysBackup true | |
:local encryptSysBackup false | |
:local saveRawExport true | |
:local FTPServer "ftpserver.tld" | |
:local FTPPort 21 | |
:local FTPUser "my-mikrotik" | |
:local FTPPass "SecurePassword" | |
:local ts [/system clock get time] | |
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8]) | |
:local ds [/system clock get date] | |
:set ds ([:pick $ds 7 11].[:pick $ds 0 3].[:pick $ds 4 6]) | |
:local fname ("BACKUP-".[/system identity get name]."-".$ds."-".$ts) | |
:local sfname ("/".$fname) | |
:if ($saveUserDB) do={ | |
/tool user-manager database save name=($sfname.".umb") | |
:log info message="User Manager DB Backup Finished" | |
} | |
:if ($saveSysBackup) do={ | |
:if ($encryptSysBackup = true) do={ /system backup save name=($sfname.".backup") } | |
:if ($encryptSysBackup = false) do={ /system backup save dont-encrypt=yes name=($sfname.".backup") } | |
:log info message="System Backup Finished" | |
} | |
if ($saveRawExport) do={ | |
/export file=($sfname.".rsc") | |
:log info message="Raw configuration script export Finished" | |
} | |
:local backupFileName "" | |
:foreach backupFile in=[/file find] do={ | |
:set backupFileName ("/".[/file get $backupFile name]) | |
:if ([:typeof [:find $backupFileName $sfname]] != "nil") do={ | |
/tool fetch address=$FTPServer port=$FTPPort src-path=$backupFileName user=$FTPUser mode=ftp password=$FTPPass dst-path=$backupFileName upload=yes | |
} | |
} | |
:delay 5s | |
:foreach backupFile in=[/file find] do={ | |
:if ([:typeof [:find [/file get $backupFile name] "BACKUP-"]]!="nil") do={ | |
/file remove $backupFile | |
} | |
} | |
:log info message="Successfully removed Temporary Backup Files" | |
:log info message="Automatic Backup Completed Successfully" |
Первые четыре строки задают переменные, касающиеся того, что именно и как бэкапить:
saveUserDB - бэкапить ли базу User Manager'a
saveSysBackup - сохранять ли системный бэкап (аналогично тому, который создается по команде /system backup save в консоли)
encryptSysBackup - шифровать ли системный бэкап (поддерживается начиная с RouterOS 6.13)
saveRawExport - сохранять ли бэкап всей конфигурации в "читабельном" виде (.rsc-скрипт)
Следующие четыре строки описывают настройки для подключения к FTP и вряд ли нуждаются в комментировании.
По дополнительным просьбам сделал аналогичный скрипт, отсылающий бэкап на e-mail вместо заливки по FTP. Правда, ввиду ограничений RouterOS, каждый файл из бэкапа отправляется только отдельным письмом (т.е. получается до трех писем за один раз).
Исходник на github
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:local saveUserDb true | |
:local saveSysBackup true | |
:local encryptSysBackup false | |
:local saveRawExport true | |
:local mailTo "destination@email.tld" | |
:local ts [/system clock get time] | |
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8]) | |
:local ds [/system clock get date] | |
:set ds ([:pick $ds 7 11].[:pick $ds 0 3].[:pick $ds 4 6]) | |
:local fname ("BACKUP-".[/system identity get name]."-".$ds."-".$ts) | |
:local sfname ("/".$fname) | |
:if ($saveUserDb) do={ | |
/tool user-manager database save name=($sfname.".umb") | |
:log info message="User Manager DB Backup Finished" | |
} | |
:if ($saveSysBackup) do={ | |
:if ($encryptSysBackup) do={ | |
/system backup save name=($sfname.".backup") | |
} | |
else={ | |
/system backup save dont-encrypt=yes name=($sfname.".backup") | |
} | |
:log info message="System Backup Finished" | |
} | |
if ($saveRawExport) do={ | |
/export file=($sfname.".rsc") | |
:log info message="Raw configuration script export Finished" | |
} | |
:foreach backupFile in=[/file find] do={ | |
:set backupFileName ("/".[/file get $backupFile name]) | |
:if ([:typeof [:find $backupFileName $sfname]] != "nil") do={ | |
/tool email send subject=([:pick $backupFileName 1 [:len $backupFileName]]) to=$mailTo file=$backupFileName | |
} | |
} | |
:delay 5s | |
:foreach backupFile in=[/file find] do={ | |
:if ([:typeof [:find [/file get $backupFile name] "BACKUP-"]]!="nil") do={ | |
/file remove $backupFile | |
} | |
} | |
:log info message="Successfully removed Temporary Backup Files" | |
:log info message="Automatic Backup Completed Successfully" |
Настройки аналогичны первому скрипту, разве что нужно задать в переменной mailTo адрес, на который будут отправляться бэкапы.
Если вы планируете использовать скрипт, отправляющий резервные копии на почту, обязательно сначала задайте настройки отправки почты (подробно можно почитать в Mikrotik Wiki)
После добавления скрипта (допустим, мы его назвали "backup-script"), необходимо добавить задание в планировщик:
/system scheduler add interval=1d name="Run backup" on-event=backup-script \
policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=jan/01/1970 start-time=01:00:00
В шестой версии RouterOS
ОтветитьУдалитьbad command name user-manager (line 22 column 9)
Подскажите, как быть?
Можно уточнить полный номер версии? В актуальной 6.33.1 скрипт выполняется без проблем, с версиями ниже, по-моему, чем 6.15, могут быть ошибки из-за несколько изменившегося синтаксиса.
УдалитьРешается либо правкой команды под старый синтаксис (сам я уже не вспомню, что там именно изменилось, и роутеров с такой старой версией у меня уже тоже не осталось), либо обновлением до актуальной версии :)
Необходимо скачать и установить пакет User Manager. Это Extra Package
Удалитьhttps://wiki.mikrotik.com/wiki/User_Manager/Getting_started#Download