Логи и конфиги переработаны, добавлен модуль ZFS и ведется работа с телеграм-ботом

This commit is contained in:
2026-02-14 19:20:55 +03:00
parent 40bf9f9887
commit f227824070
21 changed files with 1135 additions and 689 deletions

52
modules/protocols.py Normal file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Протоколы и интерфейсы для модулей SSH Client.
Обеспечивают единый контракт для SSH-операций и операционных модулей.
"""
from typing import List, Protocol, runtime_checkable
@runtime_checkable
class SSHProtocol(Protocol):
"""
Протокол SSH-клиента: connect, cmd, close.
Реализуется SSHBase и SSHClient.
"""
def connect(self) -> None:
"""Подключение к удалённому серверу."""
...
def cmd(
self,
command: str,
sleep: float = 0.1,
out_to_print: bool = False,
suppress_warnings: bool = False,
) -> List[str]:
"""
Выполнение команды на удалённом сервере.
Returns:
[stdout, stderr]
"""
...
def close(self) -> None:
"""Закрытие соединения."""
...
class SSHOperationsBase:
"""
Базовый класс для операционных модулей (PostgreSQL, 1C, ZFS и т.д.).
Ожидает ssh_client, реализующий SSHProtocol.
"""
def __init__(self, ssh_client: SSHProtocol) -> None:
"""
Args:
ssh_client: Экземпляр, реализующий SSHProtocol (SSHBase, SSHClient).
"""
self.ssh: SSHProtocol = ssh_client