# SSH Client — автоматизация миграции 1С, ZFS Backup Централизованное управление удалёнными серверами через SSH: миграция 1С, PostgreSQL, ZFS Backup. ## Установка ```bash 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 — снапшоты, репликация, очистка ``` **Паттерн использования:** ```python 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[]`). ```bash 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 ```bash cd /root/lib/ssh_client git status git add . git commit -a -m 'Сообщение' git push -u origin main ```