Files
nas_control_bot/.history/test_system_info_20250830083606.py
2025-08-30 10:33:46 +09:00

88 lines
3.7 KiB
Python
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.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Скрипт для тестирования получения информации о системе Synology NAS
"""
import os
import sys
import logging
from pathlib import Path
# Добавляем путь проекта в sys.path
project_dir = str(Path(__file__).resolve().parent)
if project_dir not in sys.path:
sys.path.insert(0, project_dir)
from src.api.synology import SynologyAPI
from src.config.config import SYNOLOGY_POWER_API, SYNOLOGY_INFO_API, SYNOLOGY_API_VERSION
# Настройка логирования
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
def main():
"""Основная функция для тестирования получения информации о системе"""
logger.info("Тестирование получения информации о системе Synology NAS")
logger.info(f"Используемые API: POWER={SYNOLOGY_POWER_API}, INFO={SYNOLOGY_INFO_API}, VERSION={SYNOLOGY_API_VERSION}")
# Инициализация API
synology = SynologyAPI()
# Проверка онлайн статуса
logger.info("Проверка онлайн статуса...")
is_online = synology.is_online(force_check=True)
logger.info(f"Статус: {'Онлайн' if is_online else 'Оффлайн'}")
if not is_online:
logger.error("NAS недоступен. Невозможно получить информацию о системе.")
return
# Получение списка доступных API
logger.info("Получение списка доступных API...")
from src.api.api_discovery import discover_available_apis
from src.config.config import SYNOLOGY_HOST, SYNOLOGY_PORT, SYNOLOGY_SECURE
protocol = "https" if SYNOLOGY_SECURE else "http"
base_url = f"{protocol}://{SYNOLOGY_HOST}:{SYNOLOGY_PORT}/webapi"
apis = discover_available_apis(base_url)
if apis:
logger.info(f"Найдено {len(apis)} API")
# Фильтрация API для управления питанием
power_apis = [name for name in apis.keys() if "power" in name.lower()]
system_apis = [name for name in apis.keys() if "system" in name.lower() or "dsm.info" in name.lower()]
logger.info(f"API для управления питанием: {power_apis}")
logger.info(f"API для системной информации: {system_apis}")
# Проверка конкретных API
for api_name in [SYNOLOGY_POWER_API, SYNOLOGY_INFO_API]:
if api_name in apis:
api_info = apis[api_name]
logger.info(f"API {api_name}: versions={api_info.get('minVersion')}-{api_info.get('maxVersion')}, path={api_info.get('path')}")
else:
logger.warning(f"API {api_name} не найден в списке доступных API")
else:
logger.error("Не удалось получить список доступных API")
# Вывод информации о системе
logger.info("Получение информации о системе...")
system_info = synology.get_system_status()
if system_info.get("status") == "error":
logger.error(f"Ошибка получения информации о системе: {system_info.get('error')}")
else:
logger.info(f"Информация о системе: {system_info}")
logger.info("Тестирование завершено.")
if __name__ == "__main__":
main()