Colocando no totem atualização de horario no systemctl:

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 EOF
sudo 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.