Страница 1 из 1

Backup по SSH с логированием изменений

Добавлено: 23 окт 2023, 21:22
Engineer_MikroTik
Скрипт подключается по SSH к MikroTik, делает export, сравнивает с существующим бэкапом. Если различий нет - бэкап не делается, полученный .rsc сохраняется.

Если различия есть - делается бинарный .backup и файл diff с различиями с предыдущим .rsc

Оригинал скрипта:
https://настройка-микротик.рф/backup-ssh-diff/

Ставим пакет:

Код: Выделить всё

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 Порт

Re: Backup по SSH с логированием изменений

Добавлено: 25 окт 2023, 19:06
podarok66
Штука крайне интересная. Вопрос, почему именно sshpass? Чем плох доступ по ключам?

Re: Backup по SSH с логированием изменений

Добавлено: 26 окт 2023, 13:52
Engineer_MikroTik
podarok66 писал(а): 25 окт 2023, 19:06 Штука крайне интересная. Вопрос, почему именно sshpass? Чем плох доступ по ключам?
Ключи можно реализовать, но в корп сети доменная авторизация, создал отдельного пользователя и через него собрал.