88 lines
3.7 KiB
Python
88 lines
3.7 KiB
Python
#!/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()
|