mcpField
W
wake-on-lan

wake-on-lan

github.com/wmy2981云与 DevOps154 次安装5 周前更新
代码仓库

关于 wake-on-lan

wake-on-lan 是一个命令行技能,可向本地网络中兼容 WoL 的计算机发送 UDP 魔术包。它还能管理已保存的主机配置,并以 JSON 返回结果。

主要功能

  1. 01通过 UDP 魔术包唤醒主机
  2. 02添加、编辑和列出主机配置
  3. 03直接通过 MAC 地址唤醒
  4. 04设置广播地址、端口和发包数
  5. 05以 JSON 返回结果

适用场景

  1. 01按主机名称唤醒已配置的计算机
  2. 02仅使用 MAC 地址唤醒计算机
  3. 03在网络不稳定时调整发包数

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wmy2981/skills --skill wake-on-lan

安装后在 Claude Code 中输入/wake-on-lan确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.claude-plugin/
plugin.json
scripts/
.env.example
wol.py

详细介绍

网络唤醒

通过 UDP 广播发送魔术包,唤醒本地网络中兼容 WoL 的计算机。通过脚本管理主机配置,无需手动编辑 YAML。

执行规则

直接运行用户请求的命令,无需预先检查依赖项、环境变量或配置。如果有问题,脚本会报出清晰的错误——届时再检查并修复。

环境变量

变量必需描述
WOL_CONFIG_PATH❌hosts.yaml 的自定义路径(默认:~/.wmyskills/wake-on-lan/hosts.yaml)

脚本会自动从 ~/.wmyskills/.env(所有技能共享)加载这些变量;如果脚本目录中存在 scripts/.env,则优先使用该文件。请使用 scripts/.env.example 作为模板,将变量添加到 ~/.wmyskills/.env,不要覆盖已有文件。

要求

pip install pyyaml python-dotenv

用法

脚本:scripts/wol.py

管理主机
# List all configured hosts
python scripts/wol.py list

# Add a host
python scripts/wol.py add my-pc AA:BB:CC:DD:EE:FF --ip 192.168.1.100

# Edit a host's fields
python scripts/wol.py edit my-pc --mac 00:11:22:33:44:55 --ip 192.168.1.10

# Remove a host
python scripts/wol.py remove my-pc
唤醒主机
# Wake by name (from host list)
python scripts/wol.py wake my-pc

# Wake with more packets (improves reliability on lossy networks)
python scripts/wol.py wake my-pc --count 5

# Wake by raw MAC address (no config needed)
python scripts/wol.py wake-mac AA:BB:CC:DD:EE:FF

# Wake by MAC with custom broadcast
python scripts/wol.py wake-mac AA:BB:CC:DD:EE:FF --broadcast 192.168.1.255 --port 9
添加命令选项
标志描述
--ip IPIP 地址(用于显示/参考)
--broadcast BC广播地址(默认:255.255.255.255)
--port PORTUDP 端口(默认:9)
--count N要发送的魔术包数量(默认:3)
唤醒 / 按 MAC 唤醒选项
标志描述
--broadcast BC覆盖广播地址
--port PORT覆盖 UDP 端口(默认:9)
--count N要发送的数据包数量(默认:3;增加数量可提高可靠性)
编辑选项
标志描述
--new-name NAME重命名主机
--mac MAC更改 MAC 地址
--ip IP更改 IP 地址
--broadcast BC更改广播地址
--port PORT更改 UDP 端口
--count N更改数据包数量

输出格式

所有输出均为 JSON:

{"success": true, "host": "my-pc", "mac": "AA:BB:CC:DD:EE:FF", "broadcast": "255.255.255.255", "port": 9, "packets_sent": 3, "message": "Magic packet sent to AA:BB:CC:DD:EE:FF (3x via 255.255.255.255:9)"}

失败时:

{"success": false, "error": "Host 'xyz' not found", "available_hosts": ["my-pc", "my-server"]}

备注

  • 目标计算机的网络适配器和主板必须支持 WoL,并且已在 BIOS/UEFI 中启用该功能。
  • 魔术包通过 UDP 广播发送,只会在本地子网内传输。跨子网 WoL 需要配置定向广播或中继。
  • 默认情况下,主机配置存储在 ~/.wmyskills/wake-on-lan/hosts.yaml 中。脚本会在首次运行时自动创建此文件。
  • 依赖项:Python 3.8+、pyyaml。数据包构造使用标准库套接字。

评论

支持 Markdown