ansitest/proxmox/proxmox-sync-windows-time-beyond-48hrs.sh
2024-04-30 13:38:34 -06:00

39 lines
1.2 KiB
Bash

#!/bin/bash
vmid="$1"
phase="$2"
vmconf="/etc/pve/qemu-server/$vmid.conf"
if [[ "$phase" == "post-start" ]]; then
# waiting for vm guest service to start
started="false"
loopstart=$EPOCHSECONDS
while [[ "$started" == "false" ]]; do
qm guest cmd $vmid ping && started="true"
if [[ "$started" == "false" ]]; then
sleep 2
fi
if (( EPOCHSECONDS-loopstart > 60 )); then
echo "timeout for vm guest service start"
break
fi
done
# sync VM time after resume or start
if [[ "$started" == "true" ]]; then
if grep -q "ostype: win" $vmconf; then
newdate=$(date +"%d-%m-%y")
newtime=$(date +"%H:%M")
echo "resync windows time"
qm guest exec $vmid "cmd" "/c net stop W32Time & date $newdate & time $newtime & net start W32Time & w32tm /resync /nowait"
else
echo "resync linux time"
echo '{"execute":"guest-set-time"}' | socat stdin unix-connect:"/var/run/qemu-server/$vmid".qga
fi
else
echo "vm guest service not running"
exit 1
fi
fi
# REF: https://forum.proxmox.com/threads/windows-vm-time-not-updated-after-hibernate-resume.110517/page-2#post-624212