请求编写Synology NAS任务管理器脚本以重启局域网内电脑
请求编写Synology NAS任务管理器脚本以重启局域网内电脑
嘿,这个需求我太熟了!下面给你分步骤拆解,不管你的目标PC是Windows还是Linux,都能轻松搞定:
前提准备
首先得确保这几点到位:
- 目标PC和NAS在同一个局域网,能互相ping通
- 如果是Windows PC:开启了远程关机权限(可以通过组策略设置,或者右键「此电脑」→「属性」→「远程设置」里开启远程协助,同时给管理员账户设置好密码)
- 如果是Linux PC:开启了SSH服务,最好提前配置NAS到Linux的免密SSH登录(更安全,不用在脚本里写密码)
- NAS上先启用SSH(控制面板→终端机和SNMP→勾选「启用SSH服务」,方便先测试脚本)
针对Windows PC的脚本
Synology DSM自带net rpc工具,刚好能远程控制Windows的关机/重启。直接写个bash脚本就行:
#!/bin/bash # 替换成你的目标PC的IP或主机名 TARGET_PC="192.168.3.10" # 替换成Windows管理员账户的用户名和密码 WIN_USER="Admin" WIN_PASS="YourStrongPassword" # 执行重启命令:-r=重启,-f=强制关闭所有程序,-I指定目标IP,-U指定用户名密码 net rpc shutdown -r -f -I $TARGET_PC -U $WIN_USER%$WIN_PASS
测试脚本
用SSH连接到NAS,把脚本存成restart_win_pc.sh,给脚本加执行权限:chmod +x restart_win_pc.sh,然后运行./restart_win_pc.sh,看看目标PC会不会重启。如果报错,先检查用户名密码、远程权限、网络连通性。
添加到任务计划
- 打开DSM控制面板→任务计划
- 点击「创建」→「触发的任务」→「用户定义的脚本」
- 填写任务名称(比如「每日重启办公PC」),用户选择
root(需要足够权限) - 切换到「触发器」标签,设置你想要的触发时间(比如每天凌晨2点)
- 切换到「任务设置」标签,在「用户定义的脚本」里粘贴上面的脚本内容(记得替换参数)
- 保存就搞定啦,到时间NAS会自动执行脚本重启PC
针对Linux PC的脚本
如果目标是Linux机器,用SSH远程执行重启命令更靠谱:
#!/bin/bash # 替换成Linux PC的IP或主机名 TARGET_PC="192.168.3.11" # 替换成Linux的用户名(需要有sudo权限) LINUX_USER="ubuntu" # 执行重启命令,假设已配置NAS到Linux的免密SSH登录 ssh $LINUX_USER@$TARGET_PC "sudo shutdown -r now"
如果还没配置免密登录,先在NAS上生成SSH密钥:ssh-keygen(一路回车就行),然后把NAS的公钥复制到Linux PC的~/.ssh/authorized_keys文件里,这样就不用在脚本里写密码了,更安全。
注意事项
- Windows密码里如果有特殊字符(比如
!@#$%),记得用反斜杠转义,比如WIN_PASS="MyP\@ssw0rd" - 脚本文件权限最好设为
700(chmod 700 restart_pc.sh),避免其他用户看到明文密码 - 测试的时候先手动运行脚本确认可行,再添加到任务计划,避免踩坑
备注:内容来源于stack exchange,提问作者JnB




