cam1.png (70.25 KB, 下载次数: 0)
下载附件
2023-6-7 09:46 上传
于是我就想,有没有一种方法能自动化这个,停用→启用的过程。
答案是有的,我通过Wireshark抓包,获取了这个操作的POST。然后通过Python脚本来执行这个过程{:301_986:}
由于抓包分析的过程灰常的简单,我这里就不复现这个过程了,下面直接放出Python脚本
脚本很简单,通过自动登录获取cookie,然后发送post请求,自动化禁用,启用这两个操作。
from datetime import datetime
import json
import requests
print('run task',datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])
# 服务器地址和端口
host = "http://192.168.1.5:5000/webapi/entry.cgi"
params = {
"api": "SYNO.API.Auth",
"method": "login",
"version": "6",
"account": "你的NAS账号",
"passwd": "你的NAS密码",
"format": "sid",
"session": "SurveillanceStation",
}
loginResult = requests.get(url=host, params=params)
loginLoads = json.loads(loginResult.content.decode("utf-8"))
loginJson = loginLoads.get("data")
logindid = loginJson.get("did")
loginsid = loginJson.get("sid")
# cookie
headers = {
"Cookie": "id="
+ loginsid
+ "; did="
+ logindid
+ "; svs_dual_auth=; SscLanguage=chs"
}
print("login success...")
# 参数
body = {
"cameraIds": "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16",#这里你有多少个摄像头就填到多少
"blIncludeDeletedCam": "false",
"api": "SYNO.SurveillanceStation.Camera",
"method": "",
"version": "7",
}
# 发送请求,先停止
body["method"] = "Disable"
result1 = requests.post(url=host, data=body, headers=headers)
# 输出返回
result1Loads = json.loads(loginResult.content.decode("utf-8"))
result1Json = loginLoads.get("success")
if result1Json:
print("Disable success...")
# 发送请求,再启用
body["method"] = "Enable"
result2 = requests.post(url=host, data=body, headers=headers)
result2Loads = json.loads(loginResult.content.decode("utf-8"))
result2Json = loginLoads.get("success")
# 输出返回
if result2Json:
print("Enable success...")
print('Task complate',datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])
最后,我们配合NAS自带的任务计划,每隔半小时运行一次
cam2.png (53.64 KB, 下载次数: 0)
下载附件
2023-6-7 09:54 上传
最好是再配合这句,每隔6小时重启一次服务/usr/syno/bin/synopkg restart SurveillanceStation
收工~
对了,NAS上需要安装Python Pip,大家需要自行百度相关教程,当然,如果有大神可以写一个bash命令行版本的那就简直太棒了