#!/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()