多平台网络唤醒WakeOnLan

教程类 2024年7月16日

项目地址:

GitHub - bnhf/wolweb: Web interface for sending Wake-on-lan (magic packet). An HTTP server built using Golang and uses Bootstrap for UI.
Web interface for sending Wake-on-lan (magic packet). An HTTP server built using Golang and uses Bootstrap for UI. - GitHub - bnhf/wolweb: Web interface for sending Wake-on-lan (magic packet). An…

从Star和Fork数可以看出这个其实是一个非常小众的需求,因为成平的wol本身其实就是一条魔术封包消息,Linux系统基本可以直接一条命令实现类似于windows端的一条批处理命令,如ping 127.0.0.1。但是真的想要方便点的去使用好像也不是那么简单,首先得有设备能登陆shh,所以看似简单却又跟我需求相背。我经常出差基本在外面不是每个时候都方便打开电脑去处理问题,所以我家里会有一台常开的远程主机,同时又有几台需要按需求开机的主机,毕竟高配游戏主机常开功耗有点顶不住。

回归正题,网络唤醒其实也是有硬件条件支持的,主板和网卡必须要同时支持网络唤醒。一般在主板中的bios设置中,WakeOnLan 或者其他类似的叫法不同主板叫法不一样。

其次主机与内网是有线连接方式,这个是必须点,因为这个技术的原理就是在主板关机以后使用一个非常小的供电让网卡持续工作,将mac地址持续暴露在内网中,在网卡的mac地址收到特殊的魔术包以后向主板发送开机指令。

最后,网络唤醒的发送方其实就是一台支持发送魔术包的服务器,这个角色一般是软路由、服务器、甚至是Docker容器发出。

项目支持平台:

1、Arm32/64位 Win、Linux、Docker

2、X86 32/64位 Win、Linux、Docker

我使用的是小米万兆路由器,原生arm64架构支持docekr。Win环境可以自行安装Go环境去编译,由于使用环境太少不做赘述。

首先pull项目,国内网络问题可能无法直接拉官网镜像,可以导入已经编译好的镜像包。

现在!开始!一键启动!

docker run --name wolweb --restart=always --net=host -bnhf/wolweb

docker安装的时候一定要注意,网络环境一定要给host,因为本身他就需要直接处于内网环境中去向内网设备发送魔术包。

没有特殊情况的话项目已经正常启动啦,容器内的配置文件路径为 /wolweb ,所以我们可以持久化一下相关的数据配置路径 -v 如:

/dockerDir/webwol/content/data/devices.json:/wolweb/data/devices.json

当然其中的index页面也是可以自己修改一下的,支持标准html语言。

看到主页界面就很简单啦,只要mac地址配置好,网关配置好,就可以愉快的wol 了。

备注:

/wolweb/data/devices.json

设备信息文件

/wolweb/config.json

服务基本配置信息

标签