347d7388b2e6950dfd5e6b50b6c47884c7145921
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
Languages
Python
100%