Логи и конфиги переработаны, добавлен модуль ZFS и ведется работа с телеграм-ботом
This commit is contained in:
52
modules/protocols.py
Normal file
52
modules/protocols.py
Normal 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
|
||||
Reference in New Issue
Block a user