Usando NTPDATE para manter a hora certa do seu Linuxbox

Publicado por Cesar Ramina em 11/09/2006

[ Hits: 80.232 ]

 


Usando NTPDATE para manter a hora certa do seu Linuxbox



Para quem quer manter a hora certa do seu Linux, há um programa muito simples, ocupa pouca memória e pode rodar tanto no boot como manualmente. É o ntpdate.

A cada inicialização ele recolhe informações do servidor de hora e acerta a hora do sistema. Pode também ser usado manualmente para corrigir a hora com o comando:

# ntpdate -u ip-do-servidor-de-hora-certa

E para manter o horário Brasileiro, basta colocar um servidor da Hora Legal Brasileira (Observatório Nacional) no arquivo de configuração.

Para isso, depois da instalação (que no caso do Debian é "apt-get install ntpdate"), edite o arquivo /etc/default/ntpdate e substitua o NTPSERVERS para:

NTPSERVERS="200.20.186.75"

Pronto. Sua hora sempre estará em acordo com o horário oficial Brasileiro. Se na sua instalação você colocou o fuso horário da sua região corretamente, o seu relógio sempre estará acertado, mesmo que mudem os horários de verão.

Outras dicas deste autor

Usando LANMAP para criar uma imagem da rede local

Leitura recomendada

Código-Fonte Original da Missão Apollo 11

Rodar cygwin pelo wine no Ubuntu

Deixando o VIM colorido

APT e Synaptic no Fedora

O guia do preguiçoso - gamin

  

Comentários
[1] Comentário enviado por ricleite em 12/09/2006 - 09:56h

Vou tentar enrriquecer um pouco:
Para que o relógio de servidores fique sempre atualizado com o ntpdate é importante que os servidotes de NTP (o protocolo de ajuste de hora) estejam online. Isso nem sempre é possível se usarmos o ntpdate sempre com o mesmo ip de um servidor de tempo.
Para resolver este problema o site ntp.org fornece um alias de dns que retorna aleatoriamente um "pool" de ips de servidores de tempo do mundo todo e também do Brasil:

O comando pra usar o ntpdade usando esse pool de servidores é:

ntpdate pool.ntp.org

E se vc preferir somente servidores brasileiros:

ntpdate br.pool.ntp.org

Isso isto é muito lindo mas pode ainda assim acontecer que justamente o servidor de tempo retornado esteja offiline bem na hora de acertar o tempo e além disso convém que o horário seja sincronizado com o clock de hardware do linux com o comando:
clock -w

Eu fiz um pequeno script (que pode ser rodado diariamente pelo crontab) que tenta se conectar 5 vezes a servidores de tempo brasileiros e acerta a hora e que resolve a maioria dos problemas:


---8<------8<------8<------8<------8<------8<------8<------8<------8<---
#!/bin/bash
RETRY_MAX=5

retry=1
while [ 1 ] ; do

echo "Tentativa:$retry"
ntpdate br.pool.ntp.org

if [ "$?" -ne "1" ]; then
clock -w
echo "OK"
exit 0
fi

let retry=$retry+1
if [ "$retry" -gt "$RETRY_MAX" ] ; then
echo "ERRO: Nao foi possivel ajustar a hora na $RETRY_MAX tentativa."
echo "Provavelmente sem conexao a internet ou sem DNS server"
exit 1
fi
done

[2] Comentário enviado por Cesar.AR em 12/09/2006 - 10:14h

Esse problema que você comentou ocorre com servidores ntp do pool de servidores. O servidor que indiquei (200.20.186.75) é do Observatório Nacional, que tem um relógio de césio e funciona 24 horas por dia. Visite http://pcdsh01.on.br/ - Hora Legal Brasileira do Observatório Nacional.

Obrigado pela contribuição.

[3] Comentário enviado por rovaris em 20/11/2006 - 11:31h

Fiz tudo certinho e ele sincroniza o relógio do meu Debian com 2 horas a mais que o horário certo.. pq?

[4] Comentário enviado por valterrezendeeng em 10/10/2007 - 15:03h

Fiz um pouco diferente mas deu certo

Muito Bom

[5] Comentário enviado por removido em 25/01/2010 - 00:01h

Oi pessoal,

Para acertar a hora no Ubuntu precisei fazer duas alterações no script do Ricardo, a primeira foi acrescentar a opção "-u" para ntpdate e a outra foi alterar o comando "clock" para "hwclock", depois foi só adicionar no crontab e correr pro abraço.

Segue o script com os ajustes:

---8<------8<------8<------8<------8<------8<------8<------8<------8<---
#!/bin/bash
RETRY_MAX=5

retry=1
while [ 1 ] ; do

echo "Tentativa:$retry"
ntpdate -u br.pool.ntp.org

if [ "$?" -ne "1" ]; then
hwclock -w
echo "OK"
exit 0
fi

let retry=$retry+1
if [ "$retry" -gt "$RETRY_MAX" ] ; then
echo "ERRO: Nao foi possivel ajustar a hora na $RETRY_MAX tentativa."
echo "Provavelmente sem conexao a internet ou sem DNS server"
exit 1
fi
done

---8<------8<------8<------8<------8<------8<------8<------8<------8<---

Valeu galera!

[6] Comentário enviado por wosores em 13/10/2022 - 11:57h

Em 2022 se o comando ntpdate não estiver rodando só apontar para o caminho absoluto

#!/bin/bash
RETRY_MAX=5

retry=1
while [ 1 ] ; do

echo "Tentativa:$retry"
ntpdate -u br.pool.ntp.org
/usr/sbin/ntpdate -u br.pool.ntp.org

if [ "$?" -ne "1" ]; then
hwclock -w
echo "OK"
exit 0
fi

let retry=$retry+1
if [ "$retry" -gt "$RETRY_MAX" ] ; then
echo "ERRO: Nao foi possivel ajustar a hora na $RETRY_MAX tentativa."
echo "Provavelmente sem conexao a internet ou sem DNS server"
exit 1
fi
done



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts