3.8 KiB
3.8 KiB
Network devices backup.
Скрипт на python для автоматизации сбора backup с сетевых устройств.
Используется:
- Python 3.13
- "gitpython>=3.1.44" - для работы с гитом
- "netmiko>=4.5.0" - для подключения к сетевым устройствам
- "schedule>=1.2.2" - для периодического выполнения backup
Описание работы:
После запуска клонирует удалённый репозиторий. Проходит по списку устройств, подключается по ssh и получает backup. Если есть изменения в конфиге - делает комит в локальный репозиторий. Пушит все комиты в удалённый репозиторий. Повторяет раз в сутки в указанное время.
Возможности
- Сбор backup с mikrotik, snr, cisco(ios), ряд моделей cisco small business
- Удаление локального гит репозитория полсе пуша в удалённый.
- Разбивать бэкапы по папкам внутри репозитория (по регулярному выражению от имени хоста)
- Отправлять оповещение на почту, если есть ошибки при снятии бэкапов.
- Работать локально, без пуша в удалённый репозиторий
Использование
Docker
Для запуска
- Создать папку для проекта.
- Внутри папки создать:
-
- Файл docker-compose.yaml
-
- Папку logs (в эту папку будут писаться логи)
-
- Папку config (в этой папке будет конфиг файл и список сетевых устройств)
-
- Папку backups (в этой папке будет git репозиторий с backup-ами )
Пример docker-compose файла: app/docker/docker-compose.yaml
Закомментированные переменные нужны, только в случае, если используются соответствующие функции.
services:
net-backup:
image: git.sm8255082.ru/osnova/net-backup:1.2.0
restart: "no"
volumes:
- ./logs:/app/logs
- ./config:/app/config
- ./backups:/app/backups
environment:
- TZ=Europe/Moscow # Часовой пояс.
- NET_DEV_USER=admin # Имя пользователя для подключаться к устройствам.
#- NET_DEV_DOMAIN=local # Домен, если используется доменная учётная запись.
- NET_DEV_PWD=password # Пароль от УЗ для подключения к устройствам.
#- GIT_USERNAME=git_user # Название токена, используемого для пуша коммитов в gitlab.
#- GIT_TOKEN=bla-bla-lba # Токен, используемый для пуша коммитов в gitlab.
#- MAIL_USER=mail_user # Пользователь для авторизации на smtp сервере
#- MAIL_PWD=bla-bla-lba # Пароль для авторизации на smtp сервере
Настройка
В папке config:
- Создать файл config.ini (пример содержимого app/config/config-template.ini)
- Создать файл dev_list.txt (список устройств)
Пример содержимого dev_list.txt, которое попадёт под регулярное выражение по умолчанию.
HOME-GW01 192.168.254.1 MikroTik RB5009UPr+S+
HOME-ASW02 192.168.250.202 MikroTik CRS310-8G+2S+