Ранее была заметка про бекапы на почту. Наверно с тех же пор я и забил их собирать, потому что
- письма фильтруешь и складываешь в отдельную папку автоматом помечая прочитанными
- если что то поломалось в скрипте - ты все равно узнаешь об этом довольно поздно
Как идея складывать конфиги или бекапы или и то и то локально ( просто иметь последний за вчера ) а при необходимости собирать и ротировать их на каком нибудь сервачке или где нибудь в облаке
для бекапа достаточно использовать простой скрипт в планировщике
/system backup save dont-encrypt=yes name=asd;
для экспортта конфига аналогично
/export compact file=asd.rsc;
надо учесть что в случае бекапа - погуглить параметры dont-encrypt, encryption и password, а в случае выгрузки конфига - на hide-sensitive - это может быть полезно для скрытия данных в конфиге или шифрования самого фала ( ну либо не использовать если не боитесь утечки / действуете в закрытом контуре или шифруете на следующем шаге)
но если файла по какому то случаю нет - то получим ошибку no such item - лучше проверить - тут немного модернизируем (логика простая - если файл есть -удалить и сделать бекап если файла нет - просто создать как вариант при первом проходе планировщика )
:if ([:len [/file find name=$fileName1]] > 0) do={
/file remove $fileName1;
/system backup save dont-encrypt=yes name=asd;
:log info ($fileName1 . " removed successfully.");
} else={
:log info ($fileName1 . " not found, create new file.");
/system backup save dont-encrypt=yes name=asd;
}
:local fileName2 "asd.rsc";
:if ([:len [/file find name=$fileName]] > 0) do={
/file remove $fileName2;
/export compact file=asd.rsc;
:log info ($fileName2 . " removed successfully.");
} else={
:log info ($fileName2 . " not found, create new file.");
/export compact file=asd.rsc;
}
в я забираю с самого сервачка обычным wget вот таким скрикптом (думаю не стоит объяснять что логин и пароль надо поменять на свои и пользователь такой должен быть - как вариант можно создать определенного пользователя и ограничить его только с определенного адреса самого сервера на случай утечки данных)
cd /mnt/1/mikrotik_bac
my_array=("192.168.89.1" "192.168.89.11" "192.168.89.12" "192.168.89.166")
user="USERMANE"
pass="PASSWORD"
for i in "${my_array[@]}"; do
тут будет не плохо добавить проверку доступности самого микрота - это делается доп циклом и следующим скриптом как тут
итоговый скрипт
cd /mnt/1/mikrotik_bac
date=`date "+%Y-%m-%d"`
my_array=("192.168.89.1" "192.168.89.11" "192.168.89.12" "192.168.89.166")
user="teminalk0"
pass="Oorah7oo"
for i in "${my_array[@]}"; do
ping -c 1 -w 5 $i &>/dev/null
if [ $? -ne 0 ] ; then
echo "mikbac2.sh: $date host $i is down Oo exit" && logger "mikbac2.sh: $date host $i down Oo exit"
else
wget -O $i.backup ftp://$user:$pass@$i/asd.backup
wget -O $i.rsc ftp://$user:$pass@$i/asd.rsc
fi
done
далее папку можно либо запихать в системный логротейт ниже пример конфигурации ( положить в /etc/logrotate.d/mikrotik и поднастроить под свои нуждики ) в примере дл файлов бекапа и конфигов если нужны только одни - оставить нужное
su filalex filalex
daily
rotate 70
maxage 150
delaycompress
compress
}
либо выполнить внутри скрипта ротацию принудительно командой
на этом все =) при появлении нового роутера в сетке
- добавить пользователя с паролем
- сделать задачу в планировщике (не забыв поставить период 1 день конечно)
- как вариант скопировать код в скрипты и разово запустить для проверки
- на серер добавить в массив новый адрес
