Colocando no totem atualização de horario no systemctl:
Script desenvolvido para corrigir o problema de data e hora nos totens, que, ao serem desligados por um período, apresentam datas e horários incorretos ao serem religados.
Instale o ntpdate sudo apt install ntpdate
Cria o script no local /datacake: forca_horario_brasilia.sh
#!/bin/bash
set -euo pipefail
# Lista de URLs para obter Date:
HOSTS=(
"https://google.com"
"https://cloudflare.com"
"https://microsoft.com"
)
get_http_date() {
curl -sI --max-time 5 "$1" \
| awk '/^Date:/ { $1=""; print substr($0,2); exit }'
}
echo "[INFO] Iniciando atualização de horário..."
# 1) Tenta cabeçalho HTTP em vários hosts
for HOST in "${HOSTS[@]}"; do
echo "[INFO] Tentando $HOST…"
DATE_HDR=$(get_http_date "$HOST" || echo "")
if [[ -n "$DATE_HDR" ]]; then
echo "[OK] Data HTTP obtida de $HOST: $DATE_HDR"
break
else
echo "[WARN] Sem resposta de $HOST"
fi
done
# 2) Se falhou em todos, tenta NTP
if [[ -z "${DATE_HDR:-}" ]]; then
if command -v ntpdate &>/dev/null; then
echo "[INFO] Sincronizando via NTP (ntpdate pool.ntp.org)…"
ntpdate -u pool.ntp.org && { echo "[OK] NTP ok"; exit 0; }
fi
# systemd-timesyncd
if systemctl is-active --quiet systemd-timesyncd; then
echo "[INFO] Ativando sync via systemd-timesyncd…"
timedatectl set-ntp true && { echo "[OK] systemd-timesyncd ok"; exit 0; }
fi
fi
# 3) Se ainda sem hora, tenta RTC
if [[ -z "${DATE_HDR:-}" ]]; then
echo "[ERRO] Não foi possível obter hora via HTTP nem via NTP."
if command -v hwclock &>/dev/null; then
echo "[INFO] Copiando hora do RTC para o sistema…"
hwclock --hctosys && { echo "[OK] Relógio de hardware aplicado"; exit 0; }
fi
echo "[FATAL] Nenhum método de atualização disponível."
exit 1
fi
# 4) Converte e aplica
DATA_LOCAL=$(TZ=America/Sao_Paulo date --date="$DATE_HDR" "+%Y-%m-%d %H:%M:%S")
echo "[INFO] Horário convertido (Brasília): $DATA_LOCAL"
date -s "$DATA_LOCAL" \
&& echo "[OK] Horário do sistema ajustado com sucesso." \
|| echo "[ERRO] Falha ao ajustar o horário."
Execute esses comandos no terminal para criar os serviços no systemctl:
sudo tee /etc/systemd/system/atualiza-hora.service > /dev/null << 'EOF'
[Unit]
Description=Atualiza horário do sistema via forca_horario_brasilia.sh
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/datacake/forca_horario_brasilia.sh
TimeoutStartSec=60
[Install]
WantedBy=multi-user.target
EOFsudo tee /etc/systemd/system/atualiza-hora.timer > /dev/null << 'EOF'
[Unit]
Description=Timer para executar atualiza-hora.service a cada hora
[Timer]
OnBootSec=5min
OnUnitActiveSec=1h
Persistent=true
[Install]
WantedBy=timers.target
EOF
Recarregue tudo e verifique se a hora será ajustada;
sudo systemctl daemon-reload
sudo systemctl enable atualiza-hora.service
sudo systemctl enable --now atualiza-hora.timer
Logs de execução:
journalctl -u atualiza-hora.service -f
Caso o problema persista, é indicado estar verificando se ao realizar a troca da pilha da bios o problema ainda ocorrerá! Ao reiniciar o totem com a nova pilha, favor trocar a data e hora manualmente e depois verificar se o problema ainda persiste ou não.