Smart mikrotik backup

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

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

Для автоматизации я буду использовать bash скрипт, а запускать его с ubuntu.

Основные моменты:

  • процесс должен происходить автономно
  • бэкап должен запускаться только если были изменения

Как это можно сделать? С пощью SSH и комманды export на микротике. Первым делом необходим будет добавить ключи — здесь описано как.

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

Проверяем получится ли у нас войти на микротик без пароля для этого вводим:

Если мы попали в консоль на микротике, значит всё отлично. Второй этап подготовка данных для отправки бэкапов с mikrotik. Я буду делать это по e-mail. Хотя конечно можно так же через SCP файлы стягивать. Нам понадобится логин, пароль, адрес сервера, порт для SMTP, адрес получателя, адрес отправителя и наличие шифрования.

Принцип скрипта:

  1. Заполняем переменные
  2. Работаем по списку адресов mikrotik (цикл for, перечисляем адреса через пробел);
  3. Если файл с адресом миротика не существует — просто загружаем конфиг, отрезаем от него первую строчку и сохраняем;
    Отрезать первую строчку необходим потому что она меняется даже если настройки не поменялись;
  4. Если файл существует, загружаем текущую конфигурацию и сравниваем её с ранее сохранённой с помощью комманды Diff;
  5. Проверяем на изменения в случае отсутствия — работаем со следующим адресом. Если есть изменения, заменяем сохранённый конфиг на новый, запускаем процесс бэкапа и отправки на e-mail;
  6. Изменившиеся строчки складываем в файл;
  7. Когда все адреса перебраны, запускаем git add, commit and push. Отправляем список изменений на e-mail.
Важный момент. Если не было изменений на микротике, то скрипт не будет вызывать «лишние» записи на флэш, export verbose использует только оперативную память.

Собственно сам скрипт:

Собственно всё, добавляем скрипту право на выполнение, добавляем в крон.

GIT

Git предлагаю использовать потому что он отлично умеет ОТСЛЕЖИВАТЬ изменения.

Ну и конечно GIT отлично сохраняет предыдущие версии, что позволяет в будущем, когда все уже давно забыли что было раньше, либо посмотреть конфиг, либо откатиться к прошлому состоянию.

Если не используете GIT просто закомментируйте в скрипте 1 строчку с ним.