找回密码
 立即注册

微信扫码登录

搜索
查看: 296|回复: 4

[经验分享] 通过HA去关闭PVE服务器以及下面的虚拟机

[复制链接]

5

主题

45

回帖

434

积分

中级会员

积分
434
金钱
384
HASS币
0
发表于 2025-7-24 13:10:09 | 显示全部楼层 |阅读模式
原贴地址:http://halo.naspro.cc/archives/1753281664105新建PVE脚本
脚本要求先关闭102 虚拟机 在关闭PVE服务器宿主机
  • 登录到 PVE 宿主机
  • 创建脚本文件
    使用 nano 或 vim 创建一个新脚本:
    nano /root/shutdown_with_vm.sh
  • 脚本内容粘贴如下:

#!/bin/bash# 定义要关闭的虚拟机IDVMID=102# 定义最大等待时间(秒)TIMEOUT=120echo "正在关闭 VM $VMID..."qm shutdown $VMID# 等待虚拟机关闭for ((i=0; i<$TIMEOUT; i++)); do    STATUS=$(qm status $VMID | grep -o "status:.*" | awk '{print $2}')    echo "当前状态: $STATUS"    if [ "$STATUS" != "running" ]; then        echo "VM $VMID 已成功关闭"        break    fi    sleep 1done# 如果虚拟机仍未关闭,强制关闭if [ "$STATUS" == "running" ]; then    echo "等待超时,强制关闭 VM $VMID..."    qm stop $VMIDfi# 延迟 5 秒再关闭宿主机,确保日志输出完整sleep 5echo "正在关闭 PVE 宿主机..."shutdown -h now
保存并退出
按 Ctrl + O 保存
按 Enter 确认文件名
按 Ctrl + X 退出
4.赋予脚本执行权限
执行以下命令使脚本可执行:
chmod +x /root/shutdown_with_vm.sh
5.手动测试脚本是否能成功运行(可选)
在 PVE 中测试脚本执行是否正常(注意:这会立即关机!请谨慎操作):
/root/shutdown_with_vm.sh
你应该会看到类似如下输出:
正在关闭 VM 102...当前状态: running当前状态: running...VM 102 已成功关闭正在关闭 PVE 宿主机...# 生成Homeassistant秘钥
在Homeassistant终端中执行
进入终端后执行:
mkdir -p /config/sshssh-keygen -t rsa -b 2048 -f /config/ssh/id_rsa
会在 /config/ssh/ 下生成以下文件:
id_rsa(私钥)id_rsa.pub(公钥)
[color=var(--post-link-color)]

                               
登录/注册后可看大图
你可以通过 Samba 或 File Editor 插件查看这些文件。
[color=var(--post-link-color)]

                               
登录/注册后可看大图
# 配置PVE服务器 上传秘钥
在PVE终端中执行
添加公钥到 PVE 的 root 用户
执行以下命令(确保 .ssh 文件夹存在):
mkdir -p ~/.sshnano ~/.ssh/authorized_keys
粘贴刚刚复制的公钥内容。
保存并退出:按 Ctrl + O,回车,Ctrl + X。
设置权限:
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys# 验证 Home Assistant 能否登录 PVE 主机
在 Home Assistant Web 终端中运行:
IP 替换成你的PVE服务器IP地址
ssh -i /config/ssh/id_rsa -o 'StrictHostKeyChecking=no' root@192.168.1.100 'echo success'
如果返回:
success
[color=var(--post-link-color)]

                               
登录/注册后可看大图

则说明免密登录已成功,可以远程执行脚本了。
# 在 Home Assistant 中配置按钮来执行 PVE 关机脚本
第一步:在 configuration.yaml 添加 shell_command
打开 File Editor 插件(或你用的任何编辑器),在 configuration.yaml 中添加以下内容:
shell_command:  shutdown_pve_with_vm: ssh -i /config/ssh/id_rsa -o 'StrictHostKeyChecking=no' [email protected] '/root/shutdown_with_vm.sh'
请确保 IP 地址与你实际一致(你的是 192.168.31.130)
第二步(推荐):封装为脚本方便 UI 调用
在 configuration.yaml 中继续添加(如果已有 script: 段,则合并):
script:  shutdown_pve_script:    alias: 一键关闭 PVE 和 Unraid    sequence:      - service: shell_command.shutdown_pve_with_vm
第三步:检查配置并重启 Home Assistant
在前端依次点击:
设置 → 系统 → 检查配置
无误后点击 重启 Home Assistant
第四步:添加按钮到 Lovelace 控制面板
进入 Lovelace 仪表盘,添加按钮卡片,YAML 模式如下:
type: buttonname: 关闭 PVE 宿主机icon: mdi:powertap_action:  action: call-service  service: script.shutdown_pve_script  confirmation:    text: 你确定要关闭 PVE 和 Unraid 虚拟机吗?
完成后,点击该按钮即可远程触发 PVE 执行 /root/shutdown_with_vm.sh:
先关闭 VM-102 → 再关闭 PVE 宿主机。
[color=var(--post-link-color)]

                               
登录/注册后可看大图
# 补充内容 增加WOL 唤醒PVE服务器
  • 在 configuration.yaml 中添加 wake_on_lan 支持
script:  wake_pve_script:    alias: 唤醒 PVE 服务器    sequence:      - service: wake_on_lan.send_magic_packet        data:          mac: "70:70:4D:6B:05:CE"          broadcast_address: "192.168.31.255"
2.重启 Home Assistant
设置 → 系统 → 检查配置
确认无误后 → 重启 Home Assistant
3.添加 Lovelace 按钮卡片(唤醒)
type: buttonname: 唤醒 PVEicon: mdi:powertap_action:  action: call-service  service: script.wake_pve_script  confirmation:    text: 你确定要唤醒 PVE 服务器吗?
[color=var(--link-hover-color)]

                               
登录/注册后可看大图

评分

参与人数 1金钱 +12 收起 理由
隔壁的王叔叔 + 12 感谢楼主分享!

查看全部评分

回复

使用道具 举报

8

主题

2097

回帖

6223

积分

论坛元老

流水无味

积分
6223
金钱
4118
HASS币
145

灌水之王

发表于 2025-7-24 14:06:59 | 显示全部楼层
做个记号 以前有这个需求,现在被查了
回复

使用道具 举报

14

主题

1608

回帖

5290

积分

论坛元老

积分
5290
金钱
3668
HASS币
0
发表于 2025-7-24 16:17:31 | 显示全部楼层
一键三联
回复

使用道具 举报

43

主题

2178

回帖

8756

积分

元老级技术达人

积分
8756
金钱
6520
HASS币
110
发表于 2025-7-24 17:14:08 | 显示全部楼层
D大不是有个插件么
回复

使用道具 举报

5

主题

143

回帖

1209

积分

金牌会员

积分
1209
金钱
1061
HASS币
0
发表于 2025-7-24 22:50:56 | 显示全部楼层
ghostist 发表于 2025-7-24 17:14
D大不是有个插件么

有现有集成,地址在这https://github.com/dougiteixeira/proxmoxve
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-8-2 15:28 , Processed in 0.350394 second(s), 8 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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