# location on Virtual Machine /opt/APC/PowerChute/group1/shutdown.sh # add on each Host Virtual Machine # permissions chmod +x /opt/APC/PowerChute/group1/shutdown.sh # shutdown.sh #!/bin/bash # === Configuration === XCP_HOST="xcp-host.local" # Replace with your host's IP or hostname XCP_USER="root" # Or another SSH-enabled user with shutdown privileges # === SSH into XCP-ng host and run commands === echo "[INFO] Connecting to XCP-ng host and shutting down VMs..." ssh ${XCP_USER}@${XCP_HOST} 'bash -s' <<'ENDSSH' echo "[HOST] Shutting down VMs..." # Gracefully shut down all running VMs for vm_uuid in $(xe vm-list is-control-domain=false power-state=running --minimal | tr ',' '\n'); do echo "Shutting down VM: $vm_uuid" xe vm-shutdown uuid=$vm_uuid done # Wait a bit for VMs to shut down echo "Waiting for VMs to shut down..." sleep 60 echo "[HOST] Shutting down host..." shutdown -h now ENDSSH echo "[INFO] Shutdown script complete." # Manually test shutdown.sh sudo /opt/APC/PowerChute/group1/shutdown.sh