Files
cursor_ai/README.md

93 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```