# 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 Закомментированные переменные нужны, только в случае, если используются соответствующие функции. ```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, которое попадёт под регулярное выражение по умолчанию. ```text HOME-GW01 192.168.254.1 MikroTik RB5009UPr+S+ HOME-ASW02 192.168.250.202 MikroTik CRS310-8G+2S+ ```