本项目解决 .155 Windows 电脑在假期/周末期间需要保持开机、假期结束后又要彻底关机的自动化需求。由于电脑不能休眠(显卡灯会亮),且微信冷启动需要手机扫码,方案将判断逻辑放在 .223 服务器:脚本 windows155_period.py 每天 18:00 检查“明天放假且今天上班”,若满足则发送 WOL 魔术包开机;每天 08:00 检查“昨天放假且今天上班”,若满足则通过 SSH 远程关机,已开机或已关机时自动跳过。节假日数据来自 GitHub 的 holiday-cn,包含周末与调休,并支持缓存和每日更新;2027 年数据未发布前退化为周末判断。Windows 端配置自动登录、微信自启及朋友圈同步计划任务,开机后保持在线,关机由服务器统一触发。方案已完成 dry-run 与实测:普通周末和国庆节点判断正确,WOL 后约 25 秒开机、SSH 约 26 秒可用。
功能
- 按“节假日前一晚 18:00”自动 WOL 开机,假期期间保持开机
- 按“节后首个工作日 08:00”SSH 远程关机,避免休眠
- 基于 holiday-cn 自动判断周末/调休,缓存并每日更新
- 已开机/已关机状态自动跳过,支持 --force 手动补发
- Windows 端自动登录、微信自启与朋友圈同步计划任务
- systemd timer 定时执行,旧周五唤醒定时器已禁用
技术栈
Pythonsystemd timerWOLSSHWindows 计划任务PowerShellholiday-cn
使用 / 部署教程
- 准备环境:在 .223 服务器保留
/opt/projects-site/scripts/windows155_period.py,确认 .155 Windows 的 WOL 与 SSH 远程关机链路可用。 - 配置定时器:创建并启用
win155-period-wake.timer(每天 18:00)和win155-period-shutdown.timer(每天 08:00);修改后执行 systemd daemon-reload。旧的blog-wake155.timer已禁用。 - 配置 Windows:启用自动登录,设置微信自启;创建登录触发的计划任务
MomentsNightlySync,流程为启动微信、等待扫码(最多 6 小时)、运行nightly_sync.ps1同步朋友圈并保持开机;创建MomentsDailySync每天 02:00 增量同步。 - 手动验证:在 .223 上执行
python3 /opt/projects-site/scripts/windows155_period.py --mode wake --force测试开机,执行--mode shutdown --force测试关机。资料实测 WOL 后约 25 秒开机、SSH 约 26 秒可用。 - 日常使用:无需干预;节假日数据自动拉取,2027 年安排发布后脚本会自动更新。需要改规则时修改脚本或 timer,再 daemon-reload。
常见问题
为什么不用休眠?
资料明确电脑不能休眠(显卡灯会亮),必须真正关机,因此采用 SSH 远程关机。
节假日数据从哪里来?
来自 GitHub 的 holiday-cn,包含周末与调休,支持自动缓存和每天尝试更新;2027 年数据未发布前退化为周末判断。
如何手动开机或关机?
在 .223 上执行 python3 /opt/projects-site/scripts/windows155_period.py --mode wake --force 手动开机,或 --mode shutdown --force 手动关机。
电脑已经开机或关机时脚本会重复操作吗?
不会。wake 模式检测到已开机会跳过,shutdown 模式检测到已关机会跳过。
注意
- 本方案要求电脑真正关机而非休眠,否则无法满足显卡灯熄灭与远程关机验证。
- 微信冷启动仍需手机扫码;自动登录与微信自启已在该机启用。
- 2027 年节假日数据未发布前,脚本退化为周末判断,发布后自动生效。

评论
加载中…