查明计算机是通过 LAN 唤醒还是电源按钮启动的?

查明计算机是通过 LAN 唤醒还是电源按钮启动的?

有没有什么(可靠的)方法可以查明 PC 是否由于 LAN 唤醒数据包而启动,而不是按电源按钮?我想自动检查 WOL 是否配置正确。

我知道 的ethtoolWOL 输出,但这只是告诉我 WOL 是否打开,而不是 PC 如何启动,对吗?

答案1

除非您的网络硬件基于 WOL 唤醒保留某些状态(您可以在引导过程中初始化后读取),否则您无法确定这一点。

从2000年开始我就没有详细看过WOL了,但是我当时使用的网卡肯定没有这样的功能。

答案2

手动测试使用etherwake

我认为你可以使用像 之类的工具来测试它etherwake。根据发行版的不同,它etherwake在 Ubuntu/Debian、ether-wakeRHEL/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 或类似的东西,那么它可以在机器关闭时监视机器,据我所知,这是没有机会的。

我没有听到,但也许有一些特定于供应商的工具可以从您的网卡读取某种日志。

相关内容