Você pode tentar o script abaixo:
#!/bin/bash
curl time.nist.gov:13 2>&1|tee time_nist_gov_13
while cat time_nist_gov_13|grep 'Empty\|denied\|unreachable'
do
sleep 0.1
curl time.nist.gov:13 2>&1|tee time_nist_gov_13
done
str=$(cat time_nist_gov_13 | sed '1,3d'|awk '{print $3}')
hh=$(echo $str|awk -F':' '{print $1}')
mm=$(echo $str|awk -F':' '{print $2}')
a=$(date -u | awk '{print $4 }'| awk -F':' '{print $1}')
b=$(date -u | awk '{print $4 }'| awk -F':' '{print $2}')
mindiff=$(echo "$b-$mm"|bc)
if [ $mindiff == "-1" ] ; then $mindiff = "1";
fi
if [ "$hh" == "$a" ] && ([ "$mm" == "$b" ] || [ "$mindiff" == "1" ]) ; then echo "Your Local time is assigned to UTC";
else echo "Your Local time is NOT assigned to UTC";
fi
Uma explicação é a seguinte: o script obtém a hora UTC + 0 e a compara com date -u
hora local subtraída pela diferença de fuso horário com referência a UTC + 0 e, se for a mesma, significa que sua hora local está correta para o seu fuso horário.
Nem sempre funcionará perfeitamente, pois o servidor pode ficar inacessível às vezes, e o script estará aguardando, e o script processa apenas o tipo de erros de árvore filtrados por 'Empty\|denied\|unreachable'
Assim, quando você tiver "Seu horário local está vinculado ao UTC", o horário local está vinculado ao UTC com o deslocamento do fuso horário local.
mas de qualquer maneira eu escrevi este roteiro para dar uma idéia de como poderia ser, e se você precisar dele mais sério, por favor inclua mais detalhes. Então, qualquer um pode ver seus requisitos para a funcionalidade. Espero que ajude.