解决方案

解决方案

当我尝试使用笔记本电脑唤醒远程机器(ubuntu 服务器)时,powerwake host01.cluster我收到一条消息说:

INFO: Trying to wake host: [host01.cluster]
INFO: Sending magic packet to: [xxxxxxxxxxxx]

不幸的是,xxxxxxxxxxxxMAC 地址不正确,因此无法远程唤醒远程机器。

当我尝试使用 IP 地址(powerwake 192.168.1.101)时,它也会将魔术包发送到错误的 MAC 地址。

我有以下行/etc/hosts/

192.168.1.101   host01.cluster  host01

但是,我可以使用和ssh进入机器。我假设,我已为静态地址设置(在我的笔记本电脑上)在这里用于解析。ssh host01ssh host01.cluster/etc/hosts

当阅读时,man powerwake它会提供一个层次结构,其中搜索用于解析名称的缓存:

  1. /var/cache/powerwake/ethers
  2. /etc/ethers
  3. 或 arp 表 ( arp -n)

在我的笔记本电脑上 ( uname -r-> 4.2.0-35-generic),项目符号列表项 1 是空的,2不存在,并且错误的 MAC 地址甚至在arp -n表中也不存在。

如果我sudo arp-scan -l在笔记本电脑上运行,错误的 MAC 地址也不会显示在那里。

运行sudo find /var/cache/ -type f -exec grep -il "host01" {} \;也没有任何结果。

除了 ubuntu/ 以外,MAC 地址还能在哪里缓存powerwake

我希望能够清除错误的 MAC 地址,以便可以用来powerwake远程唤醒这台特定的机器。

sudo ethtool eth0在远程运行显示 WOL 已启用。

Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: off (auto)
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

答案1

我仔细研究了一下/usr/bin/powerwake(只是一个 python 脚本),发现了对 的引用"%s/.cache/ethers",因此我查看了我的主目录,果然,这个文件存在(cat ~/.cache/ethers),但它不是 的一部分man powerwake

该文件保存了导致问题的 IP 地址 -> MAC 地址映射的错误引用。

解决方案

不管怎样,我删除了该文件~/.cache/ethers,然后再次“加热”了这个缓存文件。

预热 powerwake 缓存

首先,我检查了我的arp表(因为我已经将其清除),以查看其中的内容。我想要联系的远程设备均未列出,因此我对ping -c 2 192.168.1.XXX希望唤醒的每台机器执行了简单操作(远程机器需要处于打开状态并能够 ping 通)。这会将它们加载到 arp 表中(由 确认arp -n)。

然后我跑了:

  • powerwake 192.168.1.XXX每台机器
  • powerwake hostXX每台机器再次
  • 这样就可以~/.cache/ethers加载与我/etc/hosts的笔记本电脑上的文件相匹配的每个条目
  • 运行cat ~/.cache/ethers以确认文件存在并且已填充正确的 IP 地址 -> MAC 映射

相关内容