Files
hermes-skills/devops/proxmox-ve-administration/templates/ups-shutdown.sh
T

30 lines
1021 B
Bash

#!/bin/bash
# NUT-triggered controlled shutdown for Proxmox nodes
# Place at /usr/local/bin/ups-shutdown.sh on each Proxmox node.
# chmod 755 /usr/local/bin/ups-shutdown.sh
#
# Called by upsmon SHUTDOWNCMD when FSD is received from NUT master.
# Stops all running VMs and CTs gracefully (60s timeout, then force),
# waits for all to complete, then powers off the node.
logger -t nut-shutdown "Starting controlled guest shutdown on $(hostname)"
# Stop all running VMs gracefully
for vmid in $(qm list --running 2>/dev/null | awk 'NR>1{print $1}'); do
logger -t nut-shutdown "Stopping VM $vmid"
qm shutdown "$vmid" --timeout 60 --forceStop 1 &
done
# Stop all running CTs gracefully
for ctid in $(pct list --running 2>/dev/null | awk 'NR>1{print $1}'); do
logger -t nut-shutdown "Stopping CT $ctid"
pct shutdown "$ctid" --timeout 60 --forceStop 1 &
done
# Wait for all guest shutdowns to complete
wait
logger -t nut-shutdown "All guests stopped, shutting down node $(hostname)"
sleep 3
shutdown -h now