"""測試 SSH 連線到 NAS。"""

import sys
from pathlib import Path

try:
    sys.stdout.reconfigure(encoding="utf-8")
except (AttributeError, ValueError):
    pass

import paramiko

SECRETS = Path(r"C:\Users\user\Desktop\Coba\deploy_secrets.txt")
secrets = {}
for line in SECRETS.read_text(encoding="utf-8").splitlines():
    line = line.strip()
    if "=" in line and not line.startswith("#"):
        k, v = line.split("=", 1)
        secrets[k.strip()] = v.strip()

print(f"嘗試 SSH: {secrets['NAS_USER']}@{secrets['NAS_HOST']}:{secrets['NAS_PORT']}")

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:
    client.connect(
        hostname=secrets["NAS_HOST"],
        port=int(secrets["NAS_PORT"]),
        username=secrets["NAS_USER"],
        password=secrets["NAS_PASSWORD"],
        timeout=10,
        allow_agent=False,
        look_for_keys=False,
    )
    print("[OK] SSH 連線成功")

    # 跑幾個指令確認環境
    for cmd in ["whoami", "uname -a", "python3 --version 2>&1 || echo 'no python3'", "which sudo"]:
        stdin, stdout, stderr = client.exec_command(cmd)
        out = stdout.read().decode().strip()
        err = stderr.read().decode().strip()
        print(f"  $ {cmd}")
        print(f"    {out}{(' / err: ' + err) if err else ''}")

    client.close()
except paramiko.AuthenticationException:
    print("[FAIL] 密碼錯誤")
    sys.exit(1)
except Exception as e:
    print(f"[FAIL] {type(e).__name__}: {e}")
    sys.exit(1)
