SSH Client — автоматизация миграции 1С, ZFS Backup

Централизованное управление удалёнными серверами через SSH: миграция 1С, PostgreSQL, ZFS Backup.

Установка

pip install -r requirements.txt
# или (с pyproject.toml):
pip install -e .

Конфигурация

Все конфиги в каталоге config/ (YAML):

Файл Назначение
config/migration.yaml SSH, PostgreSQL, 1С, migration
config/zfs_backup.yaml ZFS Backup (серверы, пулы)
config/config_log.yaml Логирование (файл, Telegram, PRD v1.8)

Архитектура

config/
├── migration.yaml     # Миграция 1С, примеры
├── zfs_backup.yaml    # ZFS Backup
├── config_log.yaml    # Логирование (файл, Telegram)
modules/
├── ssh_base.py       # SSHBase — базовые SSH операции (connect, cmd, close)
├── ssh.py            # SSHClient — объединённый клиент (SSH + Postgres + 1C)
├── logger.py         # Единый логгер проекта
├── protocols.py      # SSHProtocol, SSHOperationsBase — контракты модулей
├── postgresql.py     # PostgreSQLOperations — операции с PostgreSQL
├── c1_cluster.py     # C1ClusterOperations — операции с кластером 1С
└── zfs_backup_ops.py # ZFS Backup — снапшоты, репликация, очистка

Паттерн использования:

from modules import SSHClient

client = SSHClient(hostname="host", port=22222, ...)
client.connect()
# PostgreSQL
bases = client.bases_list(srv_pgsql)
# 1С
client.set_c1_config(lxc_name, user, password)
client.base_info_update(...)
client.close()

Сценарии

Сценарий Точка входа Описание
Миграция 1С 1c-migration.py Скрипт миграции баз
PostgreSQL example_postgresql.py Примеры: список баз, бэкап, restore
Кластер 1С example_c1_cluster.py Примеры: версия, базы, base_info_update
ZFS Backup zfs_backup.py Cron (ежедневно 20:00), CLI

ZFS Backup

Конфигурация: config/zfs_backup.yaml (формат v1.1 с servers[].pools[]).

python zfs_backup.py --config=config/zfs_backup.yaml
# или (по умолчанию):
python zfs_backup.py
# после pip install -e .:
zfs-backup

Логи: настраиваются в config/config_log.yaml (по умолчанию /var/log/zfs_backup.log). Telegram: при telegram.enabled: true логи дублируются в Telegram-группу (PRD v1.8).

Рекомендации

  • SSHClient — рекомендуемый класс (PEP8). ssh — alias для обратной совместимости.
  • Конфиги в config/: migration.yaml (миграция, примеры), zfs_backup.yaml (ZFS).
  • Новые операционные модули: наследовать от SSHOperationsBase, реализовать контракт ssh: SSHProtocol.

Git

cd /root/lib/ssh_client
git status
git add .
git commit -a -m 'Сообщение'
git push -u origin main
Description
No description provided
Readme 120 KiB
Languages
Python 100%