Usando NTPDATE para manter a hora certa do seu Linuxbox

Publicado por Cesar Ramina em 11/09/2006

[ Hits: 80.328 ]

 


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

Produção de audio profissional no GNU/Linux

Criando e lendo QR-Code pelo shell no CentOS 6

Como utilizar os SlackBuilds 14.1 no seu sbopkg

Lista de discussão Viva o Linux

E-book free sobre Servidores WEB tipo VPS

  

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