net-backup/README.md

3.8 KiB
Raw Blame History

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+