로컬망에서 Synology NAS 관리용 API 를 제공하는 FastAPI 기반 서비스 입니다.
- Synology NAS 제품군 종료 API 추가
- Synology NAS 제품군 켜기 API 추가 (WOL, Wake On Lan)
- 비동기 지원
- 서버를 실행시킬 host ip 와 port 정보를 입력합니다.
- Synology NAS 제품군 정보를 입력합니다.
{
"ip": "[HOST_IP_FOR_LAUNCH_SERVICE]",
"port": "[HOST_PORT_FOR_LAUNCH_SERVICE]",
"servers": {
"[SYNOLOGY_NAS_NAME]": {
"ip": "[SYNOLOGY_NAS_IP]",
"port": "[SYNOLOGY_NAS_WEB_MANAGEMENT_PORT]",
"id": "[SYNOLOGY_NAS_ID_FOR_ADMIN]",
"pw": "[SYNOLOGY_NAS_PASSWORD_FOR_ADMIN]",
"dsm_major_version": [SYNOLOGY_NAS_MAJOR_VERSION]
},
"[OTHER_SYNOLOGY_NAS_NAME]": {
"ip": "[SYNOLOGY_NAS_IP]",
"port": "[SYNOLOGY_NAS_WEB_MANAGEMENT_PORT]",
"id": "[SYNOLOGY_NAS_ID_FOR_ADMIN]",
"pw": "[SYNOLOGY_NAS_PASSWORD_FOR_ADMIN]",
"dsm_major_version": [SYNOLOGY_NAS_MAJOR_VERSION]
},
...
},
"ip_whitelist": [
"[CLIENT_IP]"
]
}
- Host Info: 192.168.0.100, 10000
{
"ip": "192.168.0.100",
"port": "10000",
"server": {
"MYNAS1": {
"ip": "192.168.0.3",
"port": "5000",
"mac": "00:11:22:33:44:55",
"id": "admin",
"pw": "adminadmin",
"dsm_major_version": 6
}
},
"ip_whitelist": [
"192.168.0.3",
"192.168.0.4",
"192.168.0.5"
]
}
Host 정보
192.168.0.100, 10000
Synology NAS 로컬 서버 정보
1. MYNAS1, 192.168.0.3, 5000, DSM Version: 6.2.3
2. MYNAS2, 192.168.0.13, 5000, DSM Version: 7.0.1
{
"ip": "192.168.0.100",
"port": "10000",
"server": {
"MYNAS1": {
"ip": "192.168.0.3",
"port": "5000",
"mac": "00:11:22:33:44:55",
"id": "admin",
"pw": "adminadmin",
"dsm_major_version": 6
},
"MYNAS2": {
"ip": "192.168.0.13",
"port": "5000",
"mac": "AA:00:22:33:44:AF",
"id": "admin",
"pw": "adminadmin",
"dsm_major_version": 7
}
},
"ip_whitelist": [
"192.168.0.3",
"192.168.0.4",
"192.168.0.5"
]
}
- pmws-v1.0.0.zip 압축 파일을 다운로드 받습니다.
- 다운로드 받은 파일의 압축을 풀고 파일이 위치하는 곳에서 cmd 창을 켜서 아래와 같은 방법으로 실행합니다.
> cd [압축 푼 디렉토리 경로]
> syno-manage-server.exe
- Python 3.9 기반에서 작성되었습니다.
- 해당 프로젝트를 clone 후 디렉토리로 이동합니다.
- 패키지를 다운로드 받습니다.
$ pip3 install -r requirements.txt
- 이후부터는 case 1 혹은 2 를 수행하시면 됩니다.
- 아래 명령과 같이 실행합니다.
$ pyinstaller server.spec
- dist 디렉토리로 이동하여 아래 명령과 같이 실행합니다.
$ cd dist $ ./syno-manage-server
- 아래 명령과 같이 실행합니다.
$ python3 src/server.py
GET Method
http://[SERVER_IP]:[PORT]/nas/status/[SYNOLOGY_NAS_NAME]
- 예제
http://192.168.0.100:10000/nas/status/MYNAS1
{ "ip":"192.168.0.3", "port":"5000", "active":true, "name":"MYNAS1" }
GET Method
http://[SERVER_IP]:[PORT]/nas/status
- 예제
http://192.168.0.100:10000/nas/status
{ "LDHNAS1": { "ip":"192.168.0.3", "port":"5000", "active":true }, "LDHNAS2": { "ip":"192.168.0.23", "port":"5000", "active":true } }
GET Method
http://[SERVER_IP]:[PORT]/nas/shutdown/[SYNOLOGY_NAS_NAME]
- 예제
http://192.168.0.100:10000/nas/shutdown/MYNAS1
OK
GET Method
http://[SERVER_IP]:[PORT]/nas/all/shutdown?background_mode=[true|false]
Query parameter
background_mode : true|false
- true 설정 시 NAS shutdown request 에 대한 response 여부 확인 없이 바로 response
- 예제
http://192.168.0.100:10000/nas/all/shutdown?background_mode=true
OK
GET Method
http://[SERVER_IP]:[PORT]/nas/power/on/[SYNOLOGY_NAS_NAME]
- 예제
http://192.168.0.100:10000/nas/power/on/MYNAS1
OK
GET Method
http://[SERVER_IP]:[PORT]/nas/all/power/on?background_mode=[true|false]
Query parameter
background_mode : true|false
- true 설정 시 NAS Power On request 만 전송하고 바로 response
- 예제
http://192.168.0.100:10000/nas/power/on/all
OK