32

Автоматизация бэкапов.

Может и не совсем интересно, но кому-то может понадобиться такой мануал (ни в коем случае не реклама, только в ознакомительных целях). Мне руководитель поставил задачу на работе и вот так я ее решил....


Представим ситуацию, когда, у нас появилось слишком много филиалов и в каждом стоит роутер "Mikrotik" (в моем случае их 50+), Вы всегда делали бэкапы и сливали конфигурацию...., НО! К примеру, работаете Вы не один - это раз, надоело вручную заходить и делать бэкапы - это два, даже если уверены в своих коллегах - нужно страховаться - это три. При всем этом роутеров много и количество будет рости. *Нужно автоматизировать это дело* - подумаете Вы, этим собственно и займемся.


Нужно:

- UNIX-подобная система (в моем случае FreeBSD)

- Пара роутеров "Mikrotik" для проверки скрипта


Принцип работы скрипта:

- Скрипт будет заходить на каждый роутер указанный в массиве по SSH, под каким-либо пользователем

- Давать команду на создание бэкапа в двоичном и текстовом виде, а именно в расширениях *.backup и *.rsc

- Сливать файлы на наш сервер по SCP

- Удалять созданные бэкапы на самом роутере

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


Поехали....

1: Создадим сначала пользователя, с нужными на правами. Заходим на наш микротик, в меню жмакаем System -> Users и переходим в открывшемся окне на вкладку Group, нажимаем на "+", чтобы добавить новую группу (я назвал ее script) и назначаем права как на картинке:

Далее переходим в вкладку Users и там жмем снова "+" вбиваем название пользователя, назначаем нашу созданную группу и пароль. Пусть будет у нас "Валли"

Должно получиться так:

2: Теперь нам нужно сгенерировать публичный ключ - для того, чтобы, скрипт подключался к микротику по ssh не спрашивая пароль т.е. автоматически. Заходим на наш FreeBSD под root'ом (для не знающих команда sudo su) и генерируем ключ командой: ssh-keygen -t dsa.

Будет вопрос в каком каталоге сохранять? я оставляю по дефолту, поэтому Enter, так же будет вопрос о пароле на ключ, оставляем пустой т.е. тоже нажимаем Enter.

Должно получиться так:

Проверить наличие сгенерированного ключа можно так: ls -lh /root/.ssh/ и увидите в списке свой файл, с названием id_dsa.pub.

3: Следом надо залить ключ на микротик. Возвращаемся к микротику, нажимаем IP -> Services и там есть сервис "ftp", если он выключен, то включите.

Возвращаемся на сервер и переходим в каталог с нашим ключом: cd /root/.ssh/.

Подключаемся на микротик через FTP командой: ftp 192.168.88.1

Спросит имя пользователя, вводим нашего: walle, следом пароль от него и увидите приветствие микротика:

Вводим команду передачи ключа: put id_dsa.pub и ....

Это говорит о том, что передача успешна и завершилась, вводим: exit.


4. Теперь надо назначить ключик нашему пользователю, переходим на роутер.

Откройте Files, там увидите свой ключик:

Нажимаем в главном меню роутера New Terminal и вводим такую строку: user ssh-keys import public-key-file=id_dsa.pub user=walle. Команда выполнится молча. Проверяем импортировался ли ключ, переходим System -> Users в вкладке SSH Keys увидите ключ импортированный для пользователя walle.

Ключ мы успешно импортировали и он будет работать.

Переходим на наш FreeBSD и пробуем подключиться по SSH с использованием ключа: ssh walle@192.168.88.1.

При первом подключении вам зададут вопрос: Are you sure you want to continue connecting (yes/no)? - отвечаем: yes. Больше спрашивать не будет.

После увидите приветствие роутера.


5. Необходимо на нашем FreeBSD создать папку для бэкапов, сделал я вот такой командой: mkdir /var/mikrotik_backups/.

Назначил полные права папке chmod 777 /var/mikrotik_backups/.


6. Необходимо создать сам файл скрипта: перехожу в свой каталог cd /usr/home/Dopelngager/ и создаем файл скрипта: touch backup_mikrotik.

Назначаю точно так же полные права chmod 777 backup_mikrotik.


7. Пришли теперь к основному, а именно к написанию скрипта.

Открываем файл скрипта командой: ее backup_mikrotik

и записываем в файл вот это:


#!/usr/local/bin/bash
routers=( 192.168.88.1 )
backupdir="/var/mikrotik_backups/"
privatekey="/root/.ssh/id_dsa"
login="walle"
DATE="`date '+%Y-%m-%d'`"
for r in ${routers[@]}; do
cmd_backup="/system backup save name=${r}.backup"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
sleep 2
cmd_backup="/export file=${r}"
ssh ${login}@$r -i $privatekey "${cmd_backup}" > /dev/null
sleep 5
scp -i $privatekey ${login}@${r}:${r}.backup ${backupdir}$r-$DATE.backup
scp -i $privatekey ${login}@${r}:${r}.rsc ${backupdir}$r-$DATE.rsc
ssh ${login}@$r -i $privatekey "/file remove \"${r}.backup\""
ssh ${login}@$r -i $privatekey "/file remove \"${r}.rsc\""
done
find $backupdir* -mtime +3 -exec rm {} \;


Если у вас не один роутер, то, шаги с 1 по 4 нужно сделать с каждым и в скрипт добавить роутеры в строку "routers", между скобок. ОБЯЗАТЕЛЬНО!: добавлять роутеры через пробел и пробелы около скобок тоже должны быть! Для примера добавим еще один роутер:

routers=( 192.168.88.1 192.168.88.2 ).

Проверим наш скрипт, вводим команду: ./backup_mikrotik

Должен пойти процесс скачивания и сохранения файлов.


8. Остался последний шаг - это добавить скрипт в планировщик.

Вводим команду открытия планировщика Cron: ее /etc/crontab

Добавляем строки:

#backup Mikrotik routers

* 21 * * * root /usr/home/Dopelngager/backup_mikrotik

Сохраняем и необходимо перезапустить cron: /etc/rc.d/cron restart.


Таким образом я запланировал работу скрипта ежедневно в 21 час, еженедельно, ежемесячно, ежегодно. ВАЖНО! Соблюдайте пробелы и табуляции при добавлении записей в файл, cron чувствителен к этим вещам. А лучше про него подробнее почитайте в интернете.


У меня все, надеюсь было полезно. За ошибки и шакальные картинки простите. Unix-подобные системы знаю плохо, только учусь - так что сильно не придирайтесь. Если у кого есть вариант улучшить скрипт или его работу - обязательно приму во внимание.

А вот кстати результат работы срипта:

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества