De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

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

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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