Автоматизация создания бекапов с устройств Mikrotik на Ubuntu server 14.04.4 LTS

Создавать бекапы оборудования Mikrotik будем с помощью Bash-скрипта на Ubuntu Server 14.04.5. Входе выполнения скрипта, будет осуществлен прозрачный вход на оборудование Mikrotik (как настроить прозрачное подключение к Mikrotik по SSH, читаем тут). Так же бекапы будем хранить на сетевом ресурсе, поэтому в примере скрипта будет выполнено монтирование сетевого диска.

 

Предполагается создание бекапа не одного устройства Mikrotik, поэтому подготовим заранее текстовый файл со списком IP-адресов всех устройств Mikrotik, которых хотим делать бекап.

nano adress_mikrotik
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7

Создаем файл скрипта:

nano backup_mikrotik

 

И вписываем текст скрипта, весь скрипт с комментариями, поэтому разобраться в нем и подставить свои данные не должно составить труда.

#!/bin/bash

#################################
# Переменные для работы скрипта #
#################################
# Значение текущей даты
date=$(date +%d-%m-%Y)
# Значение текущего времени
time=$(date +%H-%M)
# Имя пользователя для подключения к Mikrotik
username="admin"
# Путь к файлу с ip адресами оборудований
mikrotik="/home/admin/adress_mikrotik"
# Временная папка
tmp="/home/admin/mikrotik/"
# Логи
log=$tmp"/log.txt"
#-------------------------------#
# Хранилище бекапов
smb_path_backup="//192.168.1.2/Backups"
# Название домена (Верхний вегистр)
domain="JAKONDA.LOCAL"
# Имя пользователя
usrname="jakonda"
# Пароль
passwd="Aa1234567"
########################################
# Рабочий листинг бекапа Спартака #
########################################
# Перебираем циклом файл с адресами оборудования и делаем бекапы по каждому из них
for i in $( cat $mikrotik ); do
# Создаем временную папку для работы скрипта
mkdir -p $tmp"/"$i
# Получаем имя оборудования
RESULT=$(ssh $username"@"$i "system identity print" | awk ' {print $2} ');
echo "Начало резервного копирования оборудования Mikrotik"
echo "Начало резервного копирования оборудования Mikrotik ($time) $RESULT" > $log
# Создаем бекап оборудования
echo "Создание бекапа оборудования $i..."
ssh $username"@"$i "system backup save name=backup";
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo "Создание бекапа $i успешно ($time)" >> $log
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]"
echo "Создание бекапа $i неудачно ($time)" >> $log
echo
fi

# Создаем текстовый файл конфигурации
echo "Создание бекапа текстового файла конфигурации оборудования $i..."
ssh $username"@"$i "export file=backup.rsc";
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo "Создание бекапа текстового файла конфигурации $i успешно ($time)" >> $log
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]"
echo "Создание бекапа текстового файла конфигурации $i неудачно ($time)" >> $log
echo
fi
# Создаем каталог для бекапа оборудования
echo "Создаем директорию для размещения бекапа..."
mkdir -p $tmp/$i/$date/
echo "Создана временная директория для размещения бекапа с оборудовнаия $i ($time)" >> $log

# Скачивание созданных файлов бекапов с оборудования
echo "Скачивание полученных бекап файлов с оборудования $i..."
sftp $username"@"$i":backup.backup" $tmp/$i/$date/$i"-"$time".backup";
sftp $username"@"$i":backup.rsc" $tmp/$i/$date/$i"-"$time".rsc";
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo "Скачивание бекапов с оборудования $i успешно ($time)" >> $log
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[ОШИБКА]"
echo "Скачивание бекапов с оборудования $i неудачно ($time)" >> $log
echo
fi

# Архивируем полученный бекап
echo "Архивация бекапов..."
cd $tmp/$i/
RESULT=$(tar -czvf $date".tar.gz" $date)
echo "Бекапы за архивированны ($time)" >> $log

# Подключаем сетевое хранилище
echo "Подключение сетевого хранилища $smb_path_backup..."
RESULT=$(cat /home/admin/sudos | sudo -S -u root mount -t cifs $smb_path_backup /mnt/samba -o username=$usrname,password=$passwd,domain=$domain)
echo "Сетевое хранилище $smb_path_backup подключено ($time)" >> $log

# Создаем каталог для размещения бекапа в сетевом хранилище, если он не создан.
echo "Создаем каталог для размещения бекапов оборудоваия $i..."
RESULT=$(cat /home/admin/sudos | sudo -S -u root mkdir -p /mnt/samba/Mikrotik/$i)
echo "Каталог для размещения бекапов оборудования $i в сетевом хранилище создан ($time)" >> $log

# Перемещаем созданный архив в хранилище
echo "Размещение бекапов в сетевом хранилище..."
RESULT=$(cat /home/admin/sudos | sudo -S -u root mv $tmp_spartak/$i/$date".tar.gz" "/mnt/samba/Spartak/$i/$date.tar.gz")
echo "Бекапы оборудования $i перемещены в "$smb_path_backup"/$i ($time)" >> $log
echo "" >> $log

# Перемещаем лог файл в папку с бекапом
RESULT=$(cat /home/admin/sudos | sudo -S -u root mv $log "/mnt/samba/MIkrotik/$i/$date.log.txt")

# Подчишаем за собой на оборудование
echo "Удаляем файлы бекапа с оборудования $i"
ssh $username"@"$i "file remove backup.backup";
ssh $username"@"$i "file remove backup.rsc";
rm -r -f $tmp_spartak
# Размонтируем сетевой диск
cat /home/admin/sudos | sudo -S -u root umount $smb_path_backup
done

 

Делаем скрипт исполняемым:

chmod +x backup_mikrotik

 

Запускаем скрипт и проверяем его работу. В итоге будут созданы папки по каждому оборудованию и в каждой папке будут вот так располагаться бекапы с лог-файлами. 

 

 

Добавим в планировщик (crontab) выполнение его по заданному времени

crontab -e

Выполнять скрипт мы будем каждый день в 23:50

50 23 * * * /home/admin/auto_backup_mikrotik

 

На этом все можно наслаждаться автоматизацией работы, и у нас всегда будут бекапы которые рано или поздно нас выручат.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Оставить ответ

5 + семь =