# 远程开关机使用手册

⽂档版本 内容修订 修订⼈ 修订⽇期
V1.0 初稿 王垚 2020-12-10

# 目录

远程开关机是通过中控页面远程打开和关闭其它设备的方法,比较常见的使用场景为通过中控开启和关闭和显示屏对应的播放电脑,需要注意的是,在进行远程开关机期间,中控服务自身所在的电脑需要处于运行状态,否则无法连接中控。

# 一:Windows 远程开机

远程开机使用的是通用的网络唤醒协议,只要是支持 Wake on LAN 的设备都可以通过该协议进行唤醒。

网络唤醒(Wake-on-LAN,简称WoL)是一个以太网计算机网络标准,允许一个已经关闭电源的计算机通过网络消息被唤醒。这个标准协议大多用在局域网,但是也可以通过互联网来使用。

在Windows操作系统上启用Wake-on-LAN (WoL)功能涉及到两个方面:网络适配器的设置和BIOS设置。请按照以下步骤操作:

# 步骤1: BIOS设置

  1. 重新启动你的计算机,进入BIOS设置。通常,这需要在启动过程中按特定的键,例如DeleteF2F10Esc(具体按键取决于你的主板)。
  2. 在BIOS中找到“电源管理”或类似名称的选项。
  3. 在“电源管理”设置中找到“Wake-on-LAN”或“WOL”或类似名称的选项,并启用它。
  4. 保存你的BIOS设置,并重新启动计算机。

此处以联想台式机的 BIOS 为例,不同主板的 BIOS 不同,请以根据具体型号查询开启方式。

image-20230621145812185

image-20230621145906624

# 步骤2: Windows系统设置

  1. 在Windows系统中,右键单击左下角的“开始”按钮,然后选择“设备管理器”。

    sansi-wake-on-lan-1

  2. 在“设备管理器”中,展开“网络适配器”类别。

  3. 右键点击你的以太网适配器,然后选择“属性”。

    sansi-wake-on-lan-2

  4. 在以太网适配器的“属性”窗口中,转到“高级”选项卡。

  5. 在“高级”选项卡中,找到“唤醒能力”、“魔术封包唤醒”或类似名称的选项,并将其设置为“Magic Packet”、“开启”、“ON”或类似的选项。

    sansi-wake-on-lan-3

  6. 接下来,转到“电源管理”选项卡。

  7. 在“电源管理”选项卡中,确保选中“允许此设备唤醒计算机”复选框。

  8. 点击“确定”保存设置。

    sansi-wake-on-lan-4

现在,你的Windows计算机应该已经配置为通过Wake-on-LAN功能响应Magic Packet。请注意,不同的计算机硬件和Windows版本可能具有略微不同的选项名称和设置过程,因此如果有任何差异,请参考计算机制造商或Windows文档。

# 步骤3: 获取对应网卡的 MAC 地址

通过命令提示符(cmd),输入 ipconfig /all 来查看所有网卡的信息,找到对应网卡的 MAC 地址。

sansi-wake-on-lan-5

# 步骤4: 测试开机指令

  1. 关闭 windows 系统

  2. 在中控所在电脑上打开浏览器,直接访问: http://127.0.0.1:3436/sansi/ccs/api/v1/transfer/power/wakeup/00-00-00-00-00-00, 将链接末尾的 MAC 地址更换为上一步得到的 MAC 地址。

  3. 如果对应设备被唤醒,说明流程是正确的

⚠️注意:

  1. 远程开关机需要中控版本 2.2.6 以上的版本,低版本无效
  2. 如果上述步骤无法唤醒设备,请依次排查以下几个问题
    1. 远程设备的 BIOS 是否开启了 Wake on LAN
    2. 对应的网卡是否配置正确
    3. 中控和目标设备是否在同一个路由器(交换机)下面,如果不在同一个下面,可能需要配置路由器/交换机的转发策略。
    4. 目标设备开机后,中控所在设备是否可以 ping 通目标设备的IP地址。
    5. 如果有多网卡,请排查设置的网络适配器是否是和中控在同一个网络下的网卡。
    6. 如果有多网卡,请排查填写的 MAC 地址是否是网卡对应的地址。

# 步骤5: 添加开机按钮

添加开机按钮有两种方式:

一种是通过插件,这种方式所有的操作都是可视化的,可以支持一键开启多台设备,但定制性略微差一些。

另一种是通过脚本,可定制性较强,但是需要一点点的编程基础,最好会 javascript 语言,可以根据自己的需求进行选择。

# 1. 通过插件

⚠️注意:远程开关机需要中控版本 2.2.6 以上的版本,低版本无效

ccs-plugin-wakeup-1

ccs-plugin-wakeup-2

ccs-plugin-wakeup-3

ccs-plugin-wakeup-4

ccs-plugin-wakeup-5

ccs-plugin-wakeup-6

ccs-plugin-wakeup-7

ccs-plugin-wakeup-8

# 1. 通过脚本

⚠️注意:远程开关机需要中控版本 2.2.6 以上的版本,低版本无效

iShot_2023-06-21_16.22.47

iShot_2023-06-21_16.29.13

脚本内容为:

// 请替换 00-00-00-00-00-00 为需要开机设备的 MAC 地址,不是自己设备的 MAC 地址
axios.get('/sansi/ccs/api/v1/transfer/power/wakeup/00-00-00-00-00-00')

添加脚本后点击保存,保存后运行,在目标设备关机后,点击按钮应该就可以正常唤醒目标设备了。

# 二:Widows 远程关机

远程关机有两种方案,一种是基于 SSH 协议的,另一种是基于三思远程关机服务的 SRS<\Sansi Remote Shutdown>。

# 2.1 基于 SSH 远程关机

# 步骤1:开启 OpenSSH

基于 SSH 的远程关机需要目标设备上先开启 SSH 服务,开启步骤如下:

windows-ssh-service-1

windows-ssh-service-2

windows-ssh-service-3

windows-ssh-service-4

windows-ssh-service-5

windows-ssh-service-6

windows-ssh-service-7

windows-ssh-service-8

windows-ssh-service-9

⚠️注意:

  • 开启 SSH 服务存在一定的风险,请避免将目标设备暴露在公网上,以避免可能存在的问题。

# 步骤2:调整防火墙

可以选择关闭防火墙或者调整防火墙规则,以允许 OpenSSH 的 22 号端口通信。

调整防火墙可以参考:windows: 防火墙设置规则(给ssh开端口/ip) (opens new window)

# 步骤3:验证 SSH 登录

找另外一台设备安装 OpenSSH 客户端后,打开终端,通过以下命令登录目标设备:

# ccc 为用户名,替换为目标设备的用户名,192.168.1.99 替换为目标设备的地址
ssh ccc@192.168.1.99

如果是第一次连接,会提示保存公钥证书,输入 yes 即可。

输入上述命令后正常情况下会要求输入密码。

ssh-login-1

输入密码后如果可以看到一下界面,说明登录正常。

ssh-login-2

# 步骤4:添加关机按钮

添加关机按钮同样有两种方式,一种是通过插件,另一种是通过脚本。

# 1. 通过插件

⚠️注意:远程开关机需要中控版本 2.2.6 以上的版本,低版本无效

插件安装过程和开机部分相同,如果已安装可以忽略。

ccs-plugin-wakeup-1

ccs-plugin-wakeup-2

ccs-plugin-wakeup-3

ccs-plugin-wakeup-4

ccs-plugin-wakeup-5

此处注意将按钮功能切换为远程关机。

sansi-shutdown-1

sansi-shutdown-2

# 2. 通过脚本

⚠️注意:远程开关机需要中控版本 2.2.6 以上的版本,低版本无效

iShot_2023-06-21_16.22.47

sansi-script-shutdown-1

脚本内容为:

// 请根据现场配置情况将数据修改为现场的实际信息,如果有多个设备,可以将下面请求复制多条
axios.post('/sansi/ccs/api/v1/transfer/shutdown', {
    "os":"windows",
    "shitdown_type": "SSH",
    "ip":"192.168.158.65",
    "port": 22,
    "username":"CCC",
    "password":"my-password",
})

# 2.2 基于 SRS<\Sansi Remote Shutdown> 远程关机

# 步骤1: 下载程序

中控辅助程序 (opens new window) 下载对应平台的 remote-shutdown-service-xxx 程序,针对于 windows,应该下载后缀为 exe 的服务,如下图。

sansi-remote-shutdown-1

# 步骤2: 配置程序

sansi-remote-shutdown-1

sansi-remote-shutdown-2

sansi-remote-shutdown-3

sansi-remote-shutdown-4

sansi-remote-shutdown-5

sansi-remote-shutdown-6

sansi-remote-shutdown-7

sansi-remote-shutdown-8

sansi-remote-shutdown-9

# 步骤3:验证程序

  1. 检查任务计划程序中对应的状态,应处于正在运行状态。
  2. 在中控所在电脑的浏览器输入 http://127.0.0.1:3436/sansi/ccs/api/v1/transfer/power/shutdown/192.168.1.99,将 ip 地址替换为目标设备的 ip 地址。
  3. 观察目标设备是否关机,如果关机,说明功能正常。

# 步骤4:添加关机按钮

# 1. 通过插件

插件的安装和使用方式和上面相同,唯一不同的就是配置信息,如下:

sansi-remote-shutdown-2

# 2. 通过脚本

脚本添加方式和上面一致,脚本内容为:

// 将 ip 替换为目标设备的 IP
axios.get("/sansi/ccs/api/v1/transfer/power/shutdown/192.168.1.99")

# 其它问题

1. 为什么不使用将 remote-shtdown 快捷方式放到 shell:startup 中来启动程序,而是通过“任务计划程序”

快捷方式放到 shell:startup 中只有在用户登录后才能启动,通过任务计划程序可以在用户登录前就启动,即设备开机后,还在用户登录页面的时候,程序就可以启动了,避免远程开机后必须用户登录才能远程关机。

2. 访问接口后无返回值无效果

  1. 检查任务计划是否处于正在运行状态
  2. 在需要远程关机的设备上用浏览器访问 http://127.0.0.1:3435/sansi/remote/shutdown 看是否会关机
  3. 如果本地访问无法关机请检查服务是否启动,任务计划程序中账户的权限,和 3435 端口是否被占用
  4. 如果本地访问正常关机,其它设备访问无法关机检查防火墙,路由器,ping 等内容

3. 如果被控设备是一个笔记本,偶尔会出现无法控制的情况

如果被控设备是一个笔记本,偶尔会出现无法控制的情况,请检查任务计划程序中的条件选项,确保红框部分内容没有勾选,如果勾选了,那么在笔记本不插电源时会自动停止服务,就会出现无法控制的情况。

sansi-remote-shutdown-13