Backup по SSH +diff

Я изобрёл git! Скрипт проверяет менялась ли конфигурация и только в случае изменений делает бэкап. Пишет, что изменилось и складывает историю в отдельную директорию.

Заказав настройку MikroTik, вы получите 100% проработанное решение от опытного сетевого инженера.

Взят за основу древний скрипт 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