『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6481|回复: 15

[经验分享] PVE 下的虚拟机网络唤醒开关机(伪 wake_on_lan)

[复制链接]

2

主题

90

帖子

890

积分

高级会员

Rank: 4

积分
890
金钱
800
HASS币
0
发表于 2022-4-12 16:43:10 | 显示全部楼层 |阅读模式
本帖最后由 tty228 于 2022-5-25 10:17 编辑

homeassistant 控制 PVE 下的虚拟机有很多方式,最常用的就是 SSH 远程登录,但是每次升级 homeassistant core  后就需要重新操作一次,所以这里放弃了这种方法
采用了最传统的魔术包唤醒,当然 PVE 不支持虚拟机唤醒网卡,所以这里是伪装的

脚本来自: ojaksch

打开 PVE SSH 连接

下载附件,解压缩

复制 dosthold.sh 文件到这个目录 /usr/local/bin
复制 dosthol.service 文件到这个目录 /etc/systemd/system


# 更新软件包列表:
apt-get update
# 安装依赖:
apt install gawk socat xxd
# 更改文件权限:
chmod +s /etc/systemd/system/dosthol.service
# 打开 dosthol 自动启动:
systemctl enable dosthol
# 启动 dosthol:
systemctl status dosthol


确保你的虚拟机拥有一个非直通网卡,广播其实是发给 PVE 主机的,然后通过 dosthol 判断是否进行虚拟机操作,直通网卡 PVE 检测不到 MAC 地址,所以必须添加虚拟网卡,型号无所谓,进系统禁用还是启用也无所谓

在 configuration.yaml 文件中填入(注意缩放)
修改解压出的 turn_off_pc.sh 文件,修改其中的 MAC HOST 参数,并将文件放入 /config/shell/ 目录,懒得新建就放原有目录,反正在 config 目录下就行了
dosthol 工具可以通过发送不同的 UDP 包进行关机操作,所以关机脚本也用了这个



switch:  
  - platform: wake_on_lan
    name: "HTPC"                                   # 开关名字
    mac: "XX:XX:XX:XX:XX:XX"                       # 你虚拟机的虚拟网卡地址,用于 dosthol 检测要唤醒的虚拟机是哪一台
    host: "X.X.X.X"                                # 虚拟机地址,用于 homeassistant 检测主机是否在线
    turn_off:
      service: shell_command.turn_off_pc

shell_command:
  turn_off_pc: bash /config/shell/turn_off_pc.sh   # 这里我直接写命令,执行失败了,大概是权限或者隔离的原因,用了取巧的方法,如果改了目录或 sh 文件名这里自行修改




------------------

重启 HassOS
然后就可以看到实体了
微信截图_20220412163631.png

按下开关,查看 PVE 系统日志,可以看到正常唤醒并启动了

微信截图_20220412163828.png

然后再试试关机
微信截图_20220412164039.png


搞定收工

-------------------------------------
如果工具不能正常运行,你可以按下开关,通过 sokit 等工具监听是否正常收到广播
然后通过其他工具唤醒主机,查看虚拟机是否能正常启动(或者使用自带的 dostholc.sh 文件)

dostholc.sh 文件放到 /usr/local/bin/  目录
发送 UDP 包测试开关机

# 唤醒主机
bash /usr/local/bin/dostholc.sh -f wakeup -m XX:XX:XX:XX:XX:XX -v 1
# 关闭主机
bash /usr/local/bin/dostholc.sh -f shutdown -m XX:XX:XX:XX:XX:XX -v 1


最后,遇事不决先重启,不行再谷歌



dosthol.zip

4.46 KB, 下载次数: 125

回复

使用道具 举报

17

主题

177

帖子

1360

积分

金牌会员

Rank: 6Rank: 6

积分
1360
金钱
1183
HASS币
10
发表于 2022-4-12 18:45:03 | 显示全部楼层
能唤醒实体机吗
回复

使用道具 举报

2

主题

90

帖子

890

积分

高级会员

Rank: 4

积分
890
金钱
800
HASS币
0
 楼主| 发表于 2022-4-12 19:55:40 | 显示全部楼层
ztrx 发表于 2022-4-12 18:45
能唤醒实体机吗

实体正常唤醒不就好了吗
回复

使用道具 举报

30

主题

276

帖子

1643

积分

金牌会员

Rank: 6Rank: 6

积分
1643
金钱
1367
HASS币
0
发表于 2022-5-10 17:03:09 | 显示全部楼层
启动这部好像出错了,启动不了?
VeryCapture_20220510170237.jpg
回复

使用道具 举报

2

主题

90

帖子

890

积分

高级会员

Rank: 4

积分
890
金钱
800
HASS币
0
 楼主| 发表于 2022-5-11 00:34:06 | 显示全部楼层
justion 发表于 2022-5-10 17:03
启动这部好像出错了,启动不了?

日志太少了,无法判断为什么
回复

使用道具 举报

30

主题

276

帖子

1643

积分

金牌会员

Rank: 6Rank: 6

积分
1643
金钱
1367
HASS币
0
发表于 2022-5-11 09:22:28 | 显示全部楼层
# 安装依赖
apt install gawk socat xxd
# 打开 dosthol 自动启动
systemctl enable dosthol
# 启动 dosthol
systemctl status dosthol
第一步第二步都没有问题,显示正常,第三步执行的时候显示就是这段代码,没有其他显示内容
回复

使用道具 举报

5

主题

265

帖子

1899

积分

金牌会员

Rank: 6Rank: 6

积分
1899
金钱
1634
HASS币
0
发表于 2022-5-11 10:23:14 | 显示全部楼层
homeassistant安装在PVE里的虚拟机。PVE都关了。。homeassistant都打不开了。咋远程呢。
回复

使用道具 举报

2

主题

90

帖子

890

积分

高级会员

Rank: 4

积分
890
金钱
800
HASS币
0
 楼主| 发表于 2022-5-11 18:33:57 | 显示全部楼层
本帖最后由 tty228 于 2022-5-25 10:11 编辑
justion 发表于 2022-5-11 09:22
# 安装依赖
apt install gawk socat xxd
# 打开 dosthol 自动启动

看一下文件权限有没有问题,然后确定依赖有没有装上
回复

使用道具 举报

32

主题

2002

帖子

5091

积分

论坛元老

Rank: 8Rank: 8

积分
5091
金钱
3089
HASS币
50
QQ
发表于 2022-10-18 23:19:33 | 显示全部楼层
请教一下:我有两台PVE,一台上是HA和软路由,另一台是NAS和WIN10等等;
现在我怎么通过HA去关闭NAS的那台PVE呢?
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

0

主题

3

帖子

36

积分

新手上路

Rank: 1

积分
36
金钱
33
HASS币
0
发表于 2023-8-19 09:00:51 | 显示全部楼层
请问有没有能“远程”唤醒esxi虚拟机的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-29 18:13 , Processed in 0.087700 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表