Initial commit: Synology DSM API skill

- Add synology_api.py: DSM API client library
- Add synology_api_login.py: CLI tool for login and system info
- Add SKILL.md: Skill definition with usage examples
- Add CLAUDE.md: Developer documentation
- Add references/: Example configs and usage guide

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 17:55:43 +08:00
commit 321456d4e6
8 changed files with 1046 additions and 0 deletions

14
references/env.example Normal file
View File

@@ -0,0 +1,14 @@
# 放在 workspace 根目錄 .env 後Synology skill 會自動讀取
# 對應 references/hosts.json 內的 password_env
DS_PASSWORD_HOME=請改成你的密碼
DS_PASSWORD_OFFICE=請改成你的密碼
# 若你只操作單台,也可沿用這組預設欄位
DS_URL=https://syno.lotimmy.com/
DS_USER=你的帳號
DS_PASSWORD=請改成你的密碼
# 可選:輸出路徑
DS_LOGIN_RESULT=tmp/synology_api_login_result.json
DS_SESSION_FILE=tmp/synology_session.json
DS_SYSINFO_FILE=tmp/synology_system_info.json

12
references/hosts.json Normal file
View File

@@ -0,0 +1,12 @@
{
"home-nas": {
"url": "https://192.168.42.20:5001",
"user": "timmy",
"password_env": "DS_PASSWORD_HOME"
},
"office-nas": {
"url": "https://syno.office.local:5001",
"user": "timmy",
"password_env": "DS_PASSWORD_OFFICE"
}
}

102
references/usage.md Normal file
View File

@@ -0,0 +1,102 @@
# Synology API 工具使用說明
這個目錄放的是 Synology DSM API 相關腳本:
- `synology_api.py`:共用 API client library
- `synology_api_login.py`:登入、復用 SID、抓系統資訊
---
## 1) 先設定環境變數(建議)
可放在 workspace 根目錄 `.env`
```env
DS_URL=https://syno.lotimmy.com/
DS_USER=你的帳號
DS_PASSWORD=你的密碼
# 可選:輸出檔案路徑
DS_LOGIN_RESULT=tmp/synology_api_login_result.json
DS_SESSION_FILE=tmp/synology_session.json
DS_SYSINFO_FILE=tmp/synology_system_info.json
```
---
## 2) 基本用法
### 只登入(會先嘗試沿用舊 SID失效才重登
```bash
python3 synology_api_login.py
```
### 登入後抓系統資訊
```bash
python3 synology_api_login.py --system-info
```
### 顯示人類可讀摘要
```bash
python3 synology_api_login.py --system-info --summary
```
### 輸出精簡 JSON適合餵腳本
```bash
python3 synology_api_login.py --system-info --json-compact
```
---
## 3) 常用參數
- `--url`DSM URL預設取 `DS_URL`
- `--user`DSM 帳號(預設取 `DS_USER`
- `--password`DSM 密碼(預設取 `DS_PASSWORD`
- `--system-info`:抓系統資訊 bundle
- `--summary`:印出摘要(需搭配 `--system-info`
- `--json-compact`:印出精簡 JSON需搭配 `--system-info`
範例:
```bash
python3 synology_api_login.py \
--url "https://192.168.42.20:5001" \
--user "admin" \
--password "******" \
--system-info --json-compact
```
---
## 4) 主要輸出檔
- `tmp/synology_api_login_result.json`:登入結果(含是否沿用 cached SID
- `tmp/synology_session.json`SID session cache
- `tmp/synology_system_info.json`:完整系統資訊 API 回傳
---
## 5) 目前精簡 JSON 會包含
- `model`
- `serial`
- `ip`(優先 `eth0`
- `dsm_version`
- `cpu_usage_pct`, `cpu_clock_mhz`
- `memory_total_mb`, `memory_usage_pct`
- `temperature_c`
- `volumes`
- `disk_size_usage`(同時有 `*_bytes``*_gib`
- `disk_health`vendor 已去除多餘空白)
- `time`, `uptime`
---
## 6) 執行位置
本 README 的指令都以「目前目錄在 `scripts/synology/`」為前提。