#/bin/bash SSH="ssh hp" list=`$SSH qm list | awk 'NR>1 && $3=="running" {print $1}'` for vmid in $list; do echo "Gracefully rebooting VM $vmid..." $SSH qm reboot $vmid # Wait up to 30s for VM to cycle through stopped state elapsed=0 rebooted=false while [[ $elapsed -lt 30 ]]; do sleep 1; elapsed=$((elapsed + 2)) status=$($SSH qm status $vmid | awk '{print $2}') if [[ "$status" == "stopped" ]]; then rebooted=true break fi done if $rebooted; then echo "VM $vmid rebooted gracefully" else echo "VM $vmid timed out — performing hard reset..." $SSH qm reset $vmid fi done