Я изобрёл git! Скрипт проверяет менялась ли конфигурация и только в случае изменений делает бэкап. Пишет, что изменилось и складывает историю в отдельную директорию.
Профессиональная настройка MikroTik
Без предоплаты
Telegram: @Engineer_MikroTik
Взят за основу древний скрипт 2012 года откуда-то с анналов habr.
Для работы нужно добавить на RouterOS пользователя для backup с ограниченными правами и исправить его в скрипте.
/user group
add name=backup policy=telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,!local,!reboot,!winbox,!password,!web,!api,!romon,!dude,!tikapp
/user
add name=backup password="dsfr4w5dgr6" group=backup
Установить sshpass:
apt-get install sshpass
Далее создать скрипт
- mkdir -p /backup/scripts/
- nano /backup/scripts/RouterOS.sh
#!/bin/sh
routername=$1
sshhost=$2
sshport=$3
sshuser="backup"
sshpassword="dsfr4wdfglhiklhiluawhfroiy8loasr5dgr6"
localpath="/backup/RouterOS"/$sshhost/$routername
mkdir $localpath
precedent_export_name="$routername-config-export-precedent.rsc"
current_export_name="$routername-config-export-current.rsc"
current_backup_name="$routername-config-backup-current.backup"
diff_export_name="$routername-config-export-diff.rsc"
current_export_name_history="$routername-$(date +%Y-%m-%d-%H-%M)-config-export-current.rsc"
current_backup_name_history="$routername-$(date +%Y-%m-%d-%H-%M)-config-backup-current.backup"
diff_export_name_history="$routername-$(date +%Y-%m-%d-%H-%M)-config-export-diff.rsc"
mkdir -p $localpath/history
cd $localpath
sshpass -p $sshpassword ssh -o StrictHostKeyChecking=no $sshuser@$sshhost -p $sshport export >$current_export_name
diff -I "RouterOS" $current_export_name $localpath/$precedent_export_name >$diff_export_name
if [ "$?" -ne "0" ]; then
sshpass -p $sshpassword ssh -o StrictHostKeyChecking=no $sshuser@$sshhost -p $sshport export file=$current_export_name
sshpass -p $sshpassword ssh -o StrictHostKeyChecking=no $sshuser@$sshhost -p $sshport system backup save name=$current_backup_name
sshpass -p $sshpassword sftp -o StrictHostKeyChecking=no -oPort=$sshport $sshuser@$sshhost:$current_backup_name
rm -f $precedent_export_name
cp $current_export_name $localpath/history/$current_export_name_history
cp $current_backup_name $localpath/history/$current_backup_name_history
mv $diff_export_name $localpath/history/$diff_export_name_history
mv -f $current_export_name $precedent_export_name
rm -f $diff_export_name
exit 1
fi
mv -f $current_export_name $precedent_export_name
rm -f $diff_export_name
exit 0
Дать ему права запуска:
chmod +x /backup/scripts/RouterOS.sh
Формат использования:
/backup/scripts/RouterOS.sh Название IP Порт
Например:
/backup/scripts/RouterOS.sh GW-Master 10.1.0.1 22
Просмотр истории бэкапов:
ls -l /backup/RouterOS/history
Просмотр последних бэкапов:
ls -l /backup/RouterOS
Добавляем в crontab -e
0 20 * * * /backup/scripts/RouterOS.sh GW-Master 10.1.0.1 22