Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais] ·  Efetividade ·  Linux in Brazil ·  Floripa  

Acerte seu relógio sem recorrer ao NTP

“Na busca pela manutenção da hora certa no meu computador, eu criei um script (baseado em muitos outros que eu achei por aí) para pegar a hora certa no servidor mais confiável que eu conheço no Brasil: o do Observatório Nacional. Se você não pode ou não quer usar NTP pra manter a hora certa, pode tentar meu script, que ele dá bons resultados. Adicionando-o ao cron, você tem uma forma bem simples de manter a hora certíssima na sua máquina.

Comentários dos leitores

Os comentários abaixo são responsabilidade de seus autores e não são revisados ou aprovados pelo BR-Linux. Consulte os Termos de uso para informações adicionais. Esta notícia foi arquivada, não será possível incluir novos comentários.
Comentário de Ataliba
ide3ia legal: bom, a ideia eh super legal, ou seja, um caminho a mais para chegar no mesmo lugar, ou seja, acertar a hora do computador :-)

Comentário de Ananias
Alternativa: ntpdate ntp.on.br
Comentário de rainman
Comentários...: Bom, vc não precisaria de toda essa sua parafernália. Porquê não usar o ntpdate direto, que já vem pronto e que tem o mesmo resultado?

De qualquer maneira, usar esses métodos para acertar o relógio da sua máquina fora do momento do boot não é uma coisa recomendável. O correto mesmo é vc usar ou o ntp ou então comandos como adjtimex.

É óbvio que num desktop isolado isso não vai fazer muita diferença no final das contas, mas num ambiente maior com micros numa subrede, isso pode ajudar e bastante.

Copiando de http://susefaq.sourceforge.net/howto/time.html:

Is using ntpdate appropriate - vs ntpd?
The ntpd daemon will adjust the clock slowly, so that the system is not altered. However, the ntpdate command will adjust time suddenly if the error is bigger than 128ms. If the clock jump some seconds strange, or even bad, things can occur. Therefore, ntpd is safer - but we may not have a permanent network connection, and synchronization can take hours. Setting the clock fast is something usually done during computer initialisation (booting up) so that the daemon has an easier job.
However, if we don't have a permanent network connection, using ntpdate is our only way.

Comentário de NatuNobilis
Re: Comentários...: "Bom, vc não precisaria de toda essa sua parafernália. Porquê não usar o ntpdate direto, que já vem pronto e que tem o mesmo resultado?"

Porque, como eu disse, o ntpdate requer um daemon rodando, pelo menos no meu Gentoo. Então, esse script faz a mesma coisa sem rodar um daemon.

De qualquer forma, eu não sabia desses problemas potenciais causados pela simples mudança do horário. Obrigado pelas informações, rainman.
Comentário de jarbelix
Parabéns Garoto!: Pablo, parabéns pelo Script!

Também tinha feito um outro script. O problema que encontrei no meu script é que ele depende de uma máquina (twiki.org) que está apresentando alguns problemas de hardware.

Com esse seu script não dependemos mais de terceiros, isso é, mesmo dentro de uma rede isolada por um firewall guloso, o script funciona legal.

[ ]s

Não resisti e fiz umas pequenas alterações para checar a conectividade no momento da atualização e buscar também os segundos:

#!/bin/bash
##########################################################
# Script hlb.sh - Hora Legal Brasileira
#
# Autor: Pablo Nehab Hess - "NatuNobilis"
#
# Este script pega a hora legal de Brasilia e fornece a
# data e hora correta para o comando `date`
#
# Use-o da forma que lhe agradar e a seu próprio risco
#
# Alteração: 21/06/2005 - jarbas.junior@gmail.com
#
##########################################################

LINHA=`lynx -dump http://pcdsh01.on.br/ispy.asp |grep Bras |tr -s ' '|cut -f 4,3 -d\ `
# Precaução contra erro de conexão
# Obrigado Anderson Alves em 17/03/2005
if [ $? -eq 0 ]; then
DD=`echo $LINHA | cut -f1 -d "/"`
# Tratar a saida para satisfazer o formato do comando date.
[ $DD -lt 10 ] && DD=0$DD
MM=`echo $LINHA | cut -f2 -d "/"`
# Tratar a saida para satisfazer o formato do comando date.
[ $MM -lt 10 ] && MM=0$MM
YY=`echo $LINHA | cut -f3 -d "/" | cut -f1 -d " " | cut -b3-4`
CC=`echo $LINHA | cut -f3 -d "/" | cut -f1 -d " " | cut -b1-2`
hhmm=`echo $LINHA | cut -f2 -d " " | cut -f1,2 -d ":" --output-delimiter="" `
ss=`echo $LINHA | cut -f3 -d: `

date "$MM$DD$hhmm$YY.$ss"
else
echo "ERRO: Falha ao obter hora, relógio nao atualizado."
fi

Comentário de Ataliba
bom: bom, eu também indicaria o ntpdate ntp.on.br, que é mais fácil e ainda por cima, produz o mesmo resultado.
O que eu achei, e continuo achando é que, o script em si teve uma ótima idéia, ou seja, chegou ao resultado usando outro caminho que não fosse o tradicional.
Sendo assim, acho que tem seu mérito, mesmo não sendo digamos, aconselhável mudar a hora do relógio do computador funcionando ( detalhe, pelo menos uma vez por ano, querendo ou não, todos nõs temos que fazer isto :-) )

Comentário de ferdam
Errado, Ataliba ! Se voce se: Errado, Ataliba ! Se voce se refere as mudancas de Horario de Verao.
Esta mudanca NAO deve ser feita usando-se date/ntpdate ou qualquer outro comando.
Voce deve usar o Zone Information corretamente configurado.
Durante estas alteracoes, o relogio da maquina nao muda, apenas a janela de observacao é deslocada.

ATENCAO : nao usem scripts para esta finalidade. Se o fizerem, usem-nAa apenas durante o boot, antes da montagem dos filesystems (em ultima instancia).

Pelo que pude entender, alguns aqui estao dizendo que os firewalls estao bloqueando a porta 123 (estao tentando UDP, certo ?). Pecam para abrir esta porta para pelo menos uma das maquinas da empresa, é em favor dela mesma. É apenas para saida, nao ha perigo nenhum.
Mas, voces podem criar um elemento sicronizador a partir do clock de uma boa maquina, de um transmissor (radio) ou um clock de modem (nao esses modems internos).
Vejam em www.ntp.org
Por fim, nao usem o script (date, ntpdate, etc) !
Abraços,
Fernando
Comentário de Eduardo Habkost
Daemon para poder usar o ntpdate?: Não entendi essa de precisar de um daemon para o ntpdate. Eu sempre simplesmente rodei "ntpdate ntp.on.br", e tive o mesmo efeito do script.

O script é um outro caminho e é válido se você estiver atrás de um firewall paranóico. Mas se não há um firewall te atrapalhando e não quer rodar o daemon, basta usar o ntpdate.

Sem querer tirar o mérito pelo script, mas apenas tentando mostrar um caminho mais curto e mais simples. :)
Comentário de Ataliba Teixeira
errado em termos: errado em termos se você levar em conta que o horário de verão no Brasil não tem uma data certa. Este ano por exemplo, quem entrou no horário de verão na data certa ( ou seja, usando os zones ), literalmente ficou com a data errada por quase duas semanas.
Ou seja, sim, há horas em que o acerto de horas tem que acontecer, é inevitável. E, ainda, tem soluções que não podem ser bootadas nem a poder de porrete, ou seja, tem que ter scripts deste jeito :-)
Sendo assim, apesar de concordar com você, que o melhor modo é sempre acertar o relógio na hora do boot, também acho que, nem sempre o melhor modo é o que deve ser aplicado.
Ou seja, tem horas que o ntpdate e o script tem que realmente ser aplicados :-)
Pelo menos é assim que eu vejo ...

Comentário de wrochall
Caros este escript é igual a: Caros este escript é igual ao que eu e o anderson do linuxclube desenvolveremos!!!

veja só!



#!/bin/bash
##########################################################
# Script hlb.sh - Hora Legal Brasileira
#
# Autores: Willian Rocha Lima - "Wrochal"
# Anderson Linuxclube
# Este script pega a hora legal de Brasilia e fornece a
# data e hora correta para o comando `date`
#
# Use-o da forma que lhe agradar e a seu próprio risco
#
# Alteração: 21/06/2005 - spawn@gmail.com
#
##########################################################

LINHA=`lynx -dump http://pcdsh01.on.br/ispy.asp |grep Bras |tr -s ' '|cut -f 4,3 -d\ `
# Precaução contra erro de conexão
# Obrigado Anderson LinuxClube 17/03/2005
if [ $? -eq 0 ]; then
DD=`echo $LINHA | cut -f1 -d "/"`
# Tratar a saida para satisfazer o formato do comando date.
[ $DD -lt 10 ] && DD=0$DD
MM=`echo $LINHA | cut -f2 -d "/"`
# Tratar a saida para satisfazer o formato do comando date.
[ $MM -lt 10 ] && MM=0$MM
YY=`echo $LINHA | cut -f3 -d "/" | cut -f1 -d " " | cut -b3-4`
CC=`echo $LINHA | cut -f3 -d "/" | cut -f1 -d " " | cut -b1-2`
hhmm=`echo $LINHA | cut -f2 -d " " | cut -f1,2 -d ":" --output-delimiter="" `
ss=`echo $LINHA | cut -f3 -d: `

date "$MM$DD$hhmm$YY.$ss"
else
echo "ERRO: Falha ao obter hora, relógio nao atualizado."
fi
Comentário de Alexandre_Martins
Desenvolveremos?: É desenvolveremos mesmo?

Porque se for, solong, já foi feito. Não seria desenvolvemos? Estou tentando entender o comentário, mas ficou meio sem sentido!

Alexandre Martins
Visite www.nuca.org.br
Comentário de Patola
É zoeira com o wrochal: Não percebeu que estão zoando usando nicknames parecidos com o wrochal?
--
LinuxFUD, o TIRA-TEIMA dos ataques ao software livre: http://linuxfud.org
Comentário de Manoel Pinho
(1/2 OFF) Script para descobrir o seu IP válido: Eu uso uma idéia semelhante num pequeno script que descobre qual é o IP válido que seu micro está usando a partir da página www.whatismyip.com. Isso é útil por exemplo quando você usa algum tipo de roteador, modems ADSL ou cablemodem roteadores, etc, onde a placa de rede do micro recebe um email não válido do roteador ou setado manualmente pelo usuário.

#!/bin/sh

IP_EXTERNO=`curl http://www.whatismyip.com/ 2> /dev/null | awk -- '/title id/ {print $5}'`

echo "Endereço IP externo: $IP_EXTERNO"

Comentário de Ananias
Not Invented Here: Pessoal, o protocolo NTP não foi criado a toa. Ele serve para isso, para sincronizar computadores remotos.

Quando você pega uma página que tem o horário oficial de Brasília por http, extrai dela a string que representa a hora, e iguala o seu horário à informação recebida, você está colocando a hora errada no seu computador, já que essa informação chega no seu computador com algum atraso, devido às condições de rede e de processamento.

O protocolo NTP implementa algoritmos para estimar e compensar esse atraso, de forma a garantir que no final do processo os dois computadores estejam realmente sincronizados.

Vamos parar de espalhar soluções idiotas para problemas simples e amplamente resolvidos. Isso me parece a síndrome de "Não Inventado Aqui", NIH, em inglês: "para que eu vou utilizar essa ferramenta pronta e eficiente, se eu posso escrever meu próprio script que vai fazer o mesmo trabalho?" Nesse caso, além de fazer um trabalho redundante, já que a ferramenta apropriada para o serviço já está pronta, a síndrome de NIH ainda causa resultados piores do que os originais, já que o resultado obtido pelo uso do script é pior do que o obtido utilizando o protocolo NTP.

Por último, se no "seu gentoo" você não consegue utilizar NTP sem rodar um servidor, sugiro que você dedique mais tempo à leitura de manuais, e de documentações, ao invés de ficar compilando cada versão nova de cada software lançado. De especial interesse deve ser o "man ntpdate".
Comentário de ferdam
Continua errado. : Continua errado.
Nao é pelo fato do Brasil nao seguir o padrao ISO para a entrada e saida do Horario de Verao que podemos cometer o erro de acerta-lo com comandos.
Temos que criar e a cada ano alterar o zoneinfo e compila-lo com zic, configurando-se a data de entrada e saida adotada no Brasil.
Fazemos desta forma na Telefonica a 5 anos e usamos o NTP para sincronizar todos os servidores e centrais telefonicas.
Comandos date/ntpdate é falta grave.
Abraços,
Fernando
Comentário de NatuNobilis
Sem grosseria, por favor.: Ananias, entendi a sua crítica. Realmente, a única coisa que eu sabia sobre o NTP era que ele compensa o atraso estimado na máquina cliente. Eu não sabia o quão ruim era eu acertar o horário do meu computador após o boot com o comando date. Agradeço a você e aos outros que escreveram pelas interessantíssimas informações.

Mas eu garanto que meu script não foi criado no intuito do "não inventado aqui", e sim no do "que tal eu criar um script pra resolver um problema de uma nova forma?".

Evite ataques pessoais, Ananias. Informações são muito mais persuasivas do que "sugiro que você dedique mais tempo à leitura de manuais (...) ao invés de ficar compilando cada versão nova...".

Abraços a todos,
Pablo.
Comentário de Ataliba
bom: realmente você nao está errado, e apesar de bem mais trabalhosa, achei a solução que vocês adotaram na telefônica a mais certa ... :-)
Comentário de Ataliba
pesado: achei meio pesado teu comentário. Nem sempre uma coisa é criada porque "não foi criado aqui" e sim, porque às vezes o autor não conhece outra solução para o problema.
Já aconteceu várias vezes comigo, de eu criar uma solução, quando de repente alguém aparece com a mesma idéia e às vezes implementado de modo bem melhor do que eu fiz.
Ou seja, mesmo que no fundo seja reinventar a roda, ideias sempre vão aparecer ...
BR-Linux.org
Linux® levado a sério desde 1996. Notícias, dicas e tutoriais em bom português sobre Linux e Código Aberto. "A página sobre software livre mais procurada no Brasil", segundo a Revista Isto É.
Expediente
Sobre o BR-Linux
Enviar notícia ou release
Contato, Termos de uso
FAQ, Newsletter, RSS
Banners e selos
Anunciar no BR-Linux
BR-Linux apóia
LinuxSecurity, Tempo Real
Suporte Livre, Drupal
Verdade Absoluta
Pandemonium
Efetividade, Floripa.net
sites da comunidade
Ajuda
Moderação
Flames: não responda!
Publicar seu texto
Computador para Todos
Notícias pré-2004
Tutoriais, HCL pré-2004