cyilin / WOL的折腾日记——2

Created Sun, 23 Nov 2025 20:02:43 +0800 Modified Sun, 23 Nov 2025 21:21:36 +0800

前言

作为一个经常在外地出差且热衷于远程控制的人来说,远程开关是必不可少的配置,毕竟设备在那空转不但浪费设备寿命,而且浪费电,没有人嫌弃钱多的。

在之前我是配置了upsnap作为远控手段。不过最近主力机换成了iphone,不能在桌面添加网页快捷链接,这就导致我必须点进浏览器去登录upsnap。能用是能用,但这就显得不大方便和优雅了。

正当我思索之际,我看到了ios快捷指令。唉!我可以呼出语音助手运行快捷指令来快捷开关机啊,这多优雅,这多方便。

远程开机

远程开机,即是网络唤醒——wol,市面上已经有很多成熟的工具,没必要重复造轮子。考虑到后续是运行快捷指令来工作,因此流程越简单越好,不需要编写复杂的指令,而且也更稳定。于是我把选择了以前使用的工具:xiaoxinpro/WolGoWeb: 基于Golang的远程唤醒WebAPI

services:
  wol-go-web:
    image: chishin/wol-go-web:latest
    container_name: WolGoWeb
    restart: unless-stopped
    network_mode: host # 必须要用host模式
    environment:
      - PORT=9090 # 指定端口号,可自行更改
      - KEY=false

以上便是部署wol-go-web的docker compose命令。我们只需要访问一下urlhttp://服务器IP或域名:9090/wol?mac=需要唤醒主机的MAC地址就能实现wol了。

至于如何在主板设置wol开启,在很早以前的博客《WOL的折腾日记》便已经完成了,这里就不重复叙述了。

远程关机

老实说关机这一步我有好几个选择,并且,例如可以使用快捷指令的ssh脚本运行关机指令就能轻松完成,只需要在同一个局域网下就能稳定生效,在虚拟组网下也运行良好,对我来说几乎是不增加工作量。

但为了各个机型的兼容性和后续可能接入到home assistant中,我还是选择自己搭建一个工具:cyilin36/url-to-ssh: HTTP to SSH Gateway,浏览器访问url对指定设备输入命令

这个工具的使用方法跟wol-go-web很像,都是url来调用工具。部署方式也很简单,我已经将镜像上传到github package上,直接拉取运行就行。

services:
  url-to-ssh:
    image: ghcr.io/cyilin36/url-to-ssh:latest
    container_name: url-to-ssh
    restart: always
    network_mode: host
    environment:
      - HTTP_PORT=9091

访问的url格式是http://<容器IP>:<端口>/control/<命令>?host=<目标IP>&user=<用户名>&pwd=<密码>&port=<SSH端口>。默认使用22端口。

对于Windows,还需要一点特殊的设置。进到设置-系统-可选功能,在这里搜索并安装上openssh服务端和客户端。以此确保我们能正常通过ssh连接到需要远程关机的设备。

快捷指令

这一步是最简单的。

  1. 来到快捷指令,新增一个指令,搜索操作url并点击添加,填入上面的wol-go-web的url链接。
  2. 再次搜索操作获取url内容并点击添加。
  3. 指令重命名为电脑开机

这样一个简单的语音控制远程开机就能弄好了。对于远程关机,操作也是一样的,照猫画虎即可,url处更改为url-to-ssh的url。

安卓设备

对于安卓设备,目前还没研究出如何通过语音助手来实现访问url,因此只能将链接放到桌面,手点一下才行。

如果不局限于我这一套方案,且自己的设备有智能家居的管理软件,能绑定巴法云物联网,那也可以看看这个工具:xueayi/wake_on_mijia: Wake On Mijia(简称 wom )通过订阅巴法云主题,在局域网广播 WOL 魔术包唤醒指定设备开机,并可选通过 SSH 远程关机 Windows 主机

实测安装在自己的服务器上,可以同米家绑定巴法云,并通过小爱同学来进行语音唤醒、关机,甚至表现能比我这一套方案更好,沟槽的苹果国行的ai怎么还没端上来