Вы можете попробовать скрипт ниже:
#!/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
Объяснение следующее: сценарий получает время UTC+0 и сравнивает его с date -u
местным временем, вычтенным из разницы часовых поясов со ссылкой на время UTC+0, и, если оно совпадает, это означает, что ваше местное время является правильным для вашего времени зона.
Он не всегда будет работать идеально, потому что сервер может быть иногда недоступен, и сценарий будет ожидать, и сценарий обрабатывает только древовидные типы ошибок, фильтруя по 'Empty\|denied\|unreachable'
Итак, как только вы получили "Ваше местное время привязано к UTC", вот и все, местное время привязано к UTC со смещением местного часового пояса.
но в любом случае я написал этот сценарий, чтобы дать представление о том, как это может быть, и, если вам нужно более серьезно, пожалуйста, включите дополнительную информацию. Тогда любой желающий сможет увидеть ваши требования к функционалу. Надеюсь, поможет.