本文目录导读:

获取网络唤醒(Wake-on-LAN,WOL)设置通常需要查看网卡驱动程序的属性,方法取决于你的操作系统(Windows/Linux/macOS)。
以下是几种常见的脚本方法:
Windows (PowerShell)
Windows 下主要使用 Get-NetAdapterPowerManagement 或 Get-NetAdapterAdvancedProperty。
方法 A:查看当前唤醒状态 (最推荐)
# 获取所有网卡,并显示 Wake on LAN 相关属性 Get-NetAdapter | Get-NetAdapterPowerManagement | Select-Object Name, WakeOnLan, WakeOnMagicPacket, WakeOnPattern # 或者只查看有线网卡(通常以太网) Get-NetAdapter -Name "Ethernet*" | Get-NetAdapterPowerManagement | Select-Object Name, WakeOnLan, WakeOnMagicPacket
方法 B:查看网卡的高级属性设置 (更原始)
# 获取名为 "Ethernet" 的网卡的所有高级属性
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Where-Object {$_.RegistryKeyword -like "*Wake*" -or $_.RegistryKeyword -like "*WOL*"}
# 显示更简洁的表格
(Get-NetAdapterAdvancedProperty -Name "Ethernet" | Where-Object {$_.RegistryKeyword -like "*Wake*"} | Format-Table DisplayName, DisplayValue -AutoSize)
- 参数含义:
WakeOnLan:总开关(Enabled / Disabled)。WakeOnMagicPacket:是否支持魔术包唤醒(关键设置)。WakeOnPattern:是否支持特定网络模式唤醒。
方法 C:查看网卡物理地址 (MAC Address) 用于后续 WOL 发送
# 获取网卡的 MAC 地址 (Get-NetAdapter -Name "Ethernet" | Select-Object MacAddress).MacAddress
Linux (Bash)
Linux 下主要使用 ethtool 工具。
确保已安装 ethtool:
sudo apt install ethtool # Debian/Ubuntu sudo yum install ethtool # CentOS/RHEL
脚本获取当前 WOL 设置:
#!/bin/bash
# 获取网卡名称(通常是 eth0, ens33, enp0s3 等,排除 lo 回环)
INTERFACE=$(ip -o link show | awk -F': ' '{print $2}' | grep -v lo | head -n1)
echo "正在检查网卡: $INTERFACE"
# 使用 ethtool 获取 WOL 状态
ETHTOOL_OUTPUT=$(sudo ethtool $INTERFACE 2>/dev/null)
if [ $? -ne 0 ]; then
echo "错误:无法获取网卡信息,请确保 ethtool 已安装且有权限。"
exit 1
fi
# 提取 "Supports Wake-on:" 和 "Wake-on:" 行 (p 代表 magic packet)
echo "$ETHTOOL_OUTPUT" | grep -E "Supports Wake-on|Wake-on"
# 更精确地提取当前状态
WOL_STATE=$(echo "$ETHTOOL_OUTPUT" | grep "Wake-on:" | awk '{print $2}')
if [ "$WOL_STATE" == "d" ]; then
echo "当前 WOL 状态: 禁用 (Disabled)"
elif [ "$WOL_STATE" == "p" ]; then
echo "当前 WOL 状态: 启用魔术包 (Wake on Magic Packet)"
elif [ "$WOL_STATE" == "u" ]; then
echo "当前 WOL 状态: 单播 (Unicast)"
elif [ "$WOL_STATE" == "g" ]; then
echo "当前 WOL 状态: 多播 (Multicast)"
else
echo "当前 WOL 状态: $WOL_STATE"
fi
# 可选:同时获取 MAC 地址
MAC_ADDR=$(ip link show $INTERFACE | grep ether | awk '{print $2}')
echo "网卡 MAC 地址: $MAC_ADDR"
运行说明:
- 该脚本需要
sudo权限因为ethtool需要 root 权限。 - 常见输出:
Supports Wake-on: pumbg Wake-on: dd表示禁用,p表示魔术包可用(这是 WOL 需要的)。
macOS (Bash)
macOS 下的 WOL 支持通常依赖于硬件和驱动,没有像 Linux ethtool 那样统一的命令行工具,通常需要在 系统偏好设置 → 节能/电池 中手动查看。
脚本方法 (有限): 通过检查 sysctl 或 pmset 查看电源管理状态,但这通常不显示网卡级 WOL。
#!/bin/bash
echo "macOS 下无法通过简单脚本直接获取网卡 WOL 状态。"
echo "请前往: 系统偏好设置 -> 节能 -> 电源适配器"
echo "查看: '唤醒以供网络访问' 或类似选项"
# 检查系统是否支持网络唤醒(不一定准确)
if pmset -g | grep -q "womp"; then
echo "系统支持网络唤醒 (Wake on Magic Packet)"
pmset -g | grep "womp"
else
echo "系统可能不支持或未开启网络唤醒。"
fi
| 系统 | 核心命令/方法 | 关键查看点 |
|---|---|---|
| Windows | Get-NetAdapterPowerManagement (PowerShell) |
WakeOnMagicPacket = Enabled |
| Linux | ethtool 网卡名 |
Wake-on: p (p=魔术包) |
| macOS | 图形界面 (无标准 CLI) | 系统偏好设置 → 节能 |
建议:
- 如果你是要发送 WOL 包(唤醒别人),你只需要知道目标设备的 MAC 地址 和 子网广播地址,不需要获取自己电脑的 WOL 设置。
- 如果你是要设置(开启)WOL,可以参考以下命令:
- Windows:
Set-NetAdapterPowerManagement -Name "Ethernet" -WakeOnMagicPacket Enabled - Linux:
sudo ethtool -s eth0 wol g(启用魔术包)
- Windows: