Linux下使用网络唤醒功能

网络唤醒功能简介
我们经常有这样的场景或需求,人在外面,需要将家里的机器或公司的机器开启,进行远程控制操作。有几种方式可以实现远程开机,一是通过主板的来电自启动,通过智能开关远程开机。还有一种方式就是可以通过一台已经启动的机器通过Wake On LAN去开启唤醒另外一台机器。现在介绍通过一台已经启动的linux机器通过Wake On LAN去唤醒开启另外一台机器。为了表述清楚,我们将两台电脑分别称为目标电脑和工具电脑,目标电脑为要通过网络开启的电脑。


检查目标电脑网卡是否已经启用了网络唤醒功能
要实现网络唤醒功能,目标电脑网卡必须打开网络唤醒功能,该设置可以在BIOS中设置,也可以在Linux系统中设置。这里介绍在Linux系统中如何查看和更改网络唤醒设置。运行下面的命令:

sudo ethtool eth0 | grep "Wake-on:"
实际使用时把其中的eth0换成机器中实际的网卡名称即可。如果看到下面的输出内容,说明命令运行正确:
Supports Wake-on: pumbg
Wake-on: d
上面的第二行显示的网络唤醒状态,"d"表示被禁用,"g"表示启用。如果被禁用,可以使用下面的命令来激活:
sudo ethtool -s eth0 wol g
如果没有错误,则使用第一个命令再次检查网络唤醒状态,如果是"g",则激活成功。将这个网卡的MAC地址记录下来备用。


使用网络唤醒功能开机

要实现网络唤醒功能,首先需要在工具电脑中安装工具软件,对于Ubuntu系统,可以安装etherwake工具,使用下面的命令安装:

sudo apt install etherwake
安装成功后,将目标电脑关机。在安装了etherwake的工具电脑上运行下面的命令:
sudo etherwake -i eth0 00:11:22:33:44:55
这里的eth0是工具电脑上连接目标电脑说在网络的网卡名称。如果目标电脑成功启动,则大功告成!