69 lines
3.8 KiB
Markdown
69 lines
3.8 KiB
Markdown
# 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+
|
||
```
|