wol-sleep-pc

🖥️ 安全可靠的局域网远程电源管理

基于 Python 标准库的局域网设备远程唤醒工具,零依赖架构与本地配置隔离确保网络安全,为家庭办公场景提供可靠的电源管理方案。

收藏
3k
安装
1.3k
版本
v0.1.0
CLS 安全性认证2026-06-04
点击查看完整报告 >

使用说明

wol-sleep-pc 是一个专注于局域网设备电源管理的实用技能,通过发送 Wake-on-LAN(WOL)魔法包和 Sleep-on-LAN(SOL)倒序 MAC 包,实现对本地网络计算机的远程唤醒与休眠控制。该技能提供两个核心 Python 脚本,分别处理唤醒和休眠指令,均基于标准库 socket 实现 UDP 广播通信,无需安装任何第三方依赖。

核心用法十分直观:用户可通过命令行参数直接调用脚本,指定目标 MAC 地址和广播地址;更推荐的方式是在 ~/.config/wol-sleep-pc/config.json 创建本地配置文件,持久化存储设备 MAC 地址、倒序休眠 MAC 及网络广播地址。脚本执行时会自动加载配置,并允许命令行参数覆盖,实现灵活的配置管理。典型场景包括深夜远程唤醒 NAS 进行数据同步,或定时休眠闲置工作站以节省能源。

该技能的显著优点体现在其安全优先的设计哲学。首先,代码仅依赖 Python 标准库(argparse、json、os、socket),完全避免了供应链攻击风险。其次,默认配置采用零值填充,强制用户主动配置敏感信息,配合 .gitignore 规则确保本地配置文件不会意外进入版本控制,有效防止 MAC 地址等网络敏感信息泄露。此外,脚本运行在用户态,无需 root 权限(仅需 UDP 广播权限),降低了权限提升风险。

然而,该技能也存在一定局限性。功能上严格限定于同一二层网络(L2),若需跨网段操作必须依赖 VPN 或路由器端口转发配置,无法直接用于互联网远程管理。输入验证方面,虽然使用了 argparse 进行参数解析,但对 MAC 地址格式和广播地址范围的校验较为宽松,错误的地址格式可能导致数据包发送失败或网络异常。此外,倒序 MAC 计算需用户手动完成,对不熟悉网络协议的用户存在一定使用门槛。

该技能特别适合家庭实验室用户、小型办公网络管理员以及需要自动化电源管理的 DevOps 工程师。对于拥有多台设备的家庭用户,可通过 Home Assistant 等自动化平台集成,实现语音控制电脑开关机;对于企业机房运维人员,可将其纳入 Ansible 或 Shell 脚本工作流,在非工作时段自动休眠闲置服务器,降低能耗成本。

使用过程中的常规风险主要集中在网络配置和隐私保护层面。首先,WOL 功能依赖目标网卡的硬件支持及 BIOS/UEFI 设置,若目标设备未开启相关功能或处于完全断电状态(而非休眠),魔法包将无法生效。其次,虽然脚本本身不传输数据至外部,但 UDP 广播包在局域网内可见,若网络环境不可信,MAC 地址等硬件标识可能被嗅探。建议用户在受信任的家庭或企业内网使用,避免在公共 Wi-Fi 环境下暴露设备硬件信息。最后,配置文件存储于用户主目录,若多用户共享系统,需注意文件权限设置(建议 600),防止其他本地用户读取敏感网络配置。

安全解读

核心功能

wol-sleep-pc 提供 Wake-on-LAN (WOL) 唤醒和 Sleep-on-LAN (SOL) 睡眠两种经典网络管理功能,通过发送 Magic Packet 实现局域网内 PC 的远程电源控制。采用 Python 标准库实现,无需任何第三方依赖,部署轻量且行为完全可预测。

技术实现

  • WOL 唤醒: 向目标 MAC 地址发送标准 Magic Packet(6 字节 0xFF 前缀 + 16 次重复 MAC 地址)
  • SOL 睡眠: 发送 Inverted-MAC 格式的特殊数据包,需配合接收端守护进程使用
  • 网络层: 纯 UDP 广播,默认端口 9,支持自定义广播地址

显著优点

1. 极致安全性: 依赖审计得分 100%,零第三方库,无 eval/exec/system 等危险函数,静态分析 95 分
2. 隐私优先设计: 默认 MAC/IP 为零化地址,配置文件存于用户本地目录 ~/.config/.gitignore 自动忽略,杜绝敏感信息意外泄露

3. 来源可信: T2 级别来源(openclaw/skills GitHub 组织),代码经过完整安全认证

4. 配置灵活: CLI 标志与配置文件双重支持,JSON 格式配置直观易维护,CLI 参数可覆盖配置值

5. 合规完备: 通过 GDPR 数据最小化、用户同意机制、数据删除权利等隐私合规检查

局限性与注意事项

| 维度 | 说明 |
|------|------|
| **网络依赖** | 要求执行主机与目标 PC 处于同一 L2 网段,跨网段需配置正确广播地址或跳板主机 |
| **权限要求** | 需具备发送 UDP 广播包的系统权限,部分受限环境可能需额外配置 |
| **硬件依赖** | 目标 PC 主板 BIOS/UEFI 需开启 WOL 支持,SOL 需配套接收端软件 |
| **功能单一** | 专注网络唤醒/睡眠,无状态查询、无定时任务、无远程桌面等扩展功能 |
| **无加密传输** | Magic Packet 为明文广播,理论上可被同网段嗅探(但无实际攻击价值) |

适合人群

  • 家庭 NAS/服务器管理员,需远程唤醒闲置设备节能
  • 开发者运维本地测试机,避免物理开关机
  • 智能家居集成场景,配合 Home Assistant 等自动化平台
  • 对安全性要求严格、拒绝臃肿工具链的极简主义者

常规风险与缓解

  • 配置误用风险: 错误的广播地址可能导致数据包无法到达目标,建议先通过 pingarp 确认网络拓扑
  • SOL 兼容性: 非标准协议,需确认目标系统运行 Sleep-on-LAN 守护进程,否则无效果
  • MAC 地址暴露: Magic Packet 包含明文 MAC,虽无直接危害,但极端场景下可能辅助设备指纹识别

使用建议

推荐优先使用配置文件模式,将常用 MAC 和广播地址持久化,CLI 仅用于临时覆盖。建议添加 MIT/Apache 2.0 许可证明确开源条款,并可增强 MAC 地址正则验证提升鲁棒性。

wol-sleep-pc 内容

scripts文件夹
手动下载zip · 4.0 kB
send_sleep.pytext/plain
请选择文件