有没有什么(可靠的)方法可以查明 PC 是否由于 LAN 唤醒数据包而启动,而不是按电源按钮?我想自动检查 WOL 是否配置正确。
我知道 的ethtool
WOL 输出,但这只是告诉我 WOL 是否打开,而不是 PC 如何启动,对吗?
答案1
除非您的网络硬件基于 WOL 唤醒保留某些状态(您可以在引导过程中初始化后读取),否则您无法确定这一点。
从2000年开始我就没有详细看过WOL了,但是我当时使用的网卡肯定没有这样的功能。
答案2
手动测试使用etherwake
我认为你可以使用像 之类的工具来测试它etherwake
。根据发行版的不同,它etherwake
在 Ubuntu/Debian、ether-wake
RHEL/CentOS/Fedora 上被称为。我已经在 Fedora 上默认安装了它,它是 net-tools 包的一部分。
使用方法:
# Redhat
$ ether-wake 00:11:22:33:44:55
# Debian/Ubuntu
$ etherwake 00:11:22:33:44:55
要确认服务器支持 WOL:
$ ethtool eth0
Settings for eth0:
Supported ports: [ ]
Supported link modes:
Supports auto-negotiation: No
Advertised link modes: Not reported
Advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: g
Wake-on: g
Link detected: yes
“Supports Wake-on: g”和“Wake-on: g”告诉您该卡已配置为支持 WOL。如果缺少,您可以将其添加到ifcfg-eth0
配置中。像这样的文件:
ETHTOOL_OPTS="wol g"
使用hwinfo
我注意到,如果您仔细查看,hwinfo
就会发现有关系统如何退出省电模式的消息。还有与以太网设备相关的消息即将出现。例如:
<6>[721194.499752] e1000e 0000:00:19.0: wake-up capability disabled by ACPI
<7>[721194.499757] e1000e 0000:00:19.0: PME# disabled
<7>[721194.499831] e1000e 0000:00:19.0: irq 46 for MSI/MSI-X
<6>[721194.574306] ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
<6>[721194.576330] ehci_hcd 0000:00:1a.0: power state changed by ACPI to D0
稍后又有其他一些消息:
<6>[721197.226679] PM: resume of devices complete after 3162.340 msecs
<7>[721197.226861] PM: Finishing wakeup.
<4>[721197.226862] Restarting tasks ... done.
<6>[721197.228541] video LNXVIDEO:00: Restoring backlight state
这个想法是,这里可能有一些与系统如何启动(WOL 或电源开关)相关的消息。您可以添加一个作为 udev 事件的一部分运行的脚本,该脚本可以通过 hwinfo 输出进行 grep 以查看是否存在 WOL 与电源开关的消息。目前只是一个想法。
参考
答案3
禁用电源按钮。
如果您没有 iLO/RAC 或类似的东西,那么它可以在机器关闭时监视机器,据我所知,这是没有机会的。
我没有听到,但也许有一些特定于供应商的工具可以从您的网卡读取某种日志。