最近升级下家里的 OpenWRT 路由设备,结果发现升级后自己写的远程唤醒的脚本丢失了, 而我人又不在家里,那这个问题要如何解决?
罗列一下本文出现的设备,便于梳理关系:
简称 | 说明 |
---|---|
设备 / OpenWRT 设备 | 从路由,已安装 OpenWRT |
主机 | 需要唤醒的机器,MAC 地址未知 |
主路由 | 家中拨号路由,其他设备通过此路由联网 |
常开设备 | 固定常开,可以从远程访问的设备 |
首先要确保我们能远程连上 OpenWRT 设备,这个我们需要事先就准备好,
不然我们就只剩下本地解决这一条路。我一般会在安装好 OpenWRT 后就去确认这件事情,
比如让家中另一台常开的设备可以 ssh
到 OpenWRT。
当然,主机的远程唤醒也是要确认已经开了,我这次因为是 OpenWRT 的问题, 主机原先已经配好,所以主机的配置我们也不展开了。另外我的 OpenWRT 设备是用网线连接的, 所以这里也不去讨论 wifi 唤醒。
整理一下我们目前的情况:
ssh
OpenWRT 设备远程唤醒需要两样东西:
etherwake
:这个可以在 OpenWRT 设备上用 opkg
直接安装很明显,这两样东西我卡在了第二点上。
chatGPT 给了我这样一些建议,我这里都没有成功,不过我还是列一下,也许对其他人有效:
方法 | 结果 |
---|---|
cat /tmp/dhcp.leases |
内容为空 |
arp -a |
对应 ip 的 MAC 地址为 00:00:00:00:00:00 |
cat /var/log/messages |
没有这个文件 |
家里还有一台主路由,偶尔我会用主机直接连主路由,来应对 NAT 突然无效的情况, 所以主路由上应该也存了主机的 MAC 地址。不过事不凑巧,主路由器今天管理页面也登不上去了, 虽然不影响主机和设备上网,但是我也没办法从主路由查到 MAC 地址了。
本着雁过必留痕的原则,我觉得 OpenWRT 上一定记录了主机的 MAC,除非系统完全没开日志, 这个可能性很小,所以我还是应该去找 OpenWRT 的日志,当时我是把 luci 的 web ui 放开到常开设备上, 然后查系统日志找到的 MAC(Status 下 System Log 中),后面发现,只要 ssh 上去,一条命令就可以了:
logread -e <主机名或IP>
手忙脚乱了半天,其实只是因为没想到 OpenWRT 升级会清掉这么多东西,总结下这次的收获: