Содержание

Резервное копирование Mikrotik

Делюсь скриптами резервного копирования конфигурации Mikrotik, а также их выполнения и выгрузки по SSH.

Скрипт ручного копирования для RouterOS 7:

sh

# Backup and export configuration
# Script needs in policies: read, write, test, ftp, policy, sensitive (opt).

# Get backup name
:local date [/system clock get date]
:local year [:pick $date 7 11]
:local month [:pick $date 0 3]
:set month [:tostr ([:find "janfebmaraprmayjunjulaugsepoctnovdec" $month]/3+1)]
:if ([:tonum $month]<10) do={
    :set month "0$month"
}
:local day [:pick $date 4 6]
:local routerName [/system identity get name]
:local backupName "$routerName-$year-$month-$day"

# Backup and export
/system backup save dont-encrypt=yes name=$backupName
/export terse show-sensitive file=$backupName

Скрипт сохраняет бинарную и текстовую резервные копии в формате identity-yyyy-mm-dd.

Замечание
В RouterOS 6 логика экспорта чувствительных данных была обратная: по умолчанию экспортировалось всё, а для сокрытия чувствительных данных использовался флаг hide-sensitive.

Добавляем скрипт в ROS:

sh

/system script add name=backup dont-require-permissions=no \
policy=ftp,read,write,policy,test,sensitive \
source="# Backup and export configuration\r\
    \n:local backupName \"backup\"\r\
    \n/system backup save dont-encrypt=yes name=\$backupName\r\
    \n/export terse show-sensitive file=\$backupName"

Создаём группу:

sh

/user/group add name=backup \
policy=ssh,ftp,read,write,policy,test,sensitive,!local,!telnet,!reboot,!winbox,!password,!web,!sniff,!api,!romon,!rest-api

Добавляем пользователя:

sh

/user add name=bu group=backup password=pwd

Предварительно загружаем файл публичного RSA-ключа и добавляем его пользователю:

sh

/user/ssh-keys import user=bu public-key-file=id_rsa.pub
Замечание

RouterOS 6 не позволяет работать с меню, как с каталогами ФС, поэтому пишем по-старому:

text

/user group add
/user ssh-keys import

Удалённое выполнение скрипта резервного копирования и загрузка резервных копий в текущий каталог:

shell

ssh "r1.example.com" "/system/script run" "backup"
scp "r1.example.com:backup*" "./"
Замечание
Для подключения к RouterOS 6 требуется указать флаг -o PubkeyAcceptedKeyTypes=+ssh-rsa.
  1. Generate Backup and RSC based on Router Name + Date + Time
  2. Use SSH to execute commands (public/private key login)
  3. SSH RSA Auth. Pulling My Hair Out