você está aqui: Home  → Arquivo de Mensagens

Script para acertar data e hora sem usar o serviço NTP

Colaboração: Ricardo Jurczyk Pinheiro

Data de Publicação: 03 de Março de 2009

Devido a mudanças aqui no trabalho, nossos servidores estão agora atrás de um proxy, que filtra e deixa apenas algumas portas para conexão. E uma das portas bloqueadas é justamente a UDP 123, do serviço NTP. Resolvi procurar um script para fazer o acerto de data e hora via HTTP, consultando o site do Observatório Nacional, e achei o script do Daniel Roque, em http://tinyurl.com/au4apt.

Só que tive alguns problemas bestas com ele (como copiar e colar, e a sintaxe da expressão com o sed). Como professor que sou, resolvi dar uma arrumada no script do meu jeito, e torná-lo mais fácil para que eu e outros possam entender. Afinal das contas, sed pode ser um mistério quase insondável.

Download do script

Aqui vai o script:

  #!/bin/sh
  #
  # Acerta Hora - este script foi feito para acertar a data e a hora de uma
  # maquina Linux, sem usar o serviço NTP.
  #
  # Seg Fev 16 13:03:25 BRT 2009
  # Originalmente feito por Daniel Roque (2006roque@gmail.com)
  # Modificado por Ricardo J. Pinheiro (rjp@email.com.br)
  #
  NAVEGADOR=$(which elinks)
  QUEMSOUEU=$(whoami)
  URLDAHORA="http://pcdsh01.on.br/HoraLegalBrasileira.asp"
  LOGHORA="/var/log/horacerta.log"
  #
  # Testes
  #
  if [ $QUEMSOUEU != 'root' ]; then
        echo 'Voce precisa ser root para executar este comando'
        exit 1
  fi
  #
  if [ ! -e $NAVEGADOR ]; then
        echo 'Voce nao parece ter instalado o programa lynx por favor reinstale e tente novamente.'
        exit 1
  fi
  #
  # Pega a nova hora no servico de hora do Observatorio Nacional.
  # O site pode mudar, logo teremos que ter ajustes no script.
  #
  horarecebida=$(elinks -dump $URLDAHORA | sed -n '/.*\/.*\/.*/p;s/  / /g' | sed -n 2p)
  data=$(echo $horarecebida | tr -d "|" | cut -f2 -d" " | tr "/" " " | awk '{print $3,$2,$1}' | tr " " "-")
  hora=$(echo $horarecebida | tr -d "|" | cut -f3 -d" ")
  horacerta=$(echo $data" "$hora)
  if [ "$horacerta" != '' ]; then
        date -s "$horacerta"
        date >> $LOGHORA
  else
        echo 'Ha algo errado com o script. Pode ser a URL mudada, verifique.'
        exit 1
  fi
  exit 0
Ricardo Jurczyk Pinheiro - Linux user #82838 - http://estudiodaintrospeccao.blogspot.com


 

 

Veja a relação completa dos artigos de Ricardo Jurczyk Pinheiro

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script