Atualização de Data e Hora
Problema do Horário de Verão
Sempre que se aproxima o início ou o final do horário de verão do Brasil nos preocupamos com a atualização de nossos servidores. Essa preocupação não deveria ser
apenas neste período, e sim constante, pois uma data e hora correta nos
servidores e nas
estações nos traz alguns benefícios:
- - Data e Hora corretos em nosso servidor e/ou estação;
- - A criptografia necessita de uma precisão em relação a data e hora, pois os certificados são válidos num período de tempo (intervalo) definido;
- - Os logs de acessos aos servidores/serviços precisam ser registrados na data/hora correta, pois são a fonte de informações para uma posterior consulta;
- - etc
Pensando nisso, é interessante que toda empresa disponha de um servidor de tempo, isto é, uma máquina que esteja sempre atualizada com os horários oficiais mundiais. Esse processo de atualização de horário pode ser tão complexo quanto se queira/necessite ou tão simples como mostro abaixo.
Obter data/hora Oficial Brasileiras e acertar nossos servidores
Existe no
http://www.twiki.org um serviço gratuito para consulta a um servidor de tempo para os diversos fusos horários de nosso país já atualizado para as regiões onde há horário de verão brasileiro. A saber:
Esse serviço funciona para qualquer navegador web, isto é, você pode obter a data/hora e atualizar manualmente seus servidores e estações.
Extrair apenas a data e hora oficial brasileiras
Isso não é dificil de ser feito, bastam alguns comandos para selecionar automaticamente o início e final dessa string obtida do
servidor de tempo acima.
O trecho de programa script em bash abaixo irá buscar apenas a data e horário.
Obs.: Vamos nos ater ao horário de verão de São Paulo que é o mesmo de Brasília.
%TERMINALon%
HORACERTA=`lynx -dump
http://twiki.org/cgi-bin/xtra/tzdate?tz=America/Sao_Paulo
| grep "Date&time:"
| cut -f 5,4,3,6 -d\ `
%TERMINALoff%
- Explicando:
- o comando
lynx é um browser em modo texto. Isso mesmo, um browser simples para navegação em modo texto;
- a opção
-dump irá fazer com que o resultado que seria mostrado no lynx seja ecoado na saída padrão do GNU/Linux;
- a URL http://twiki.org/cgi-bin/xtra/tzdate?tz=America/Sao_Paulo é de onde iremos consultar nossa data e hora corretas;
- o
| é um pipe que irá fazer com que o resultado (saída padrão) do primeiro comando seja passado como entrada para o segundo;
- o
grep irá selecionar apenas a linha que contenha a string =Date&Time= .
- novamente nosso
| nos ajudando;
- o
cut selecionando e ordenando os campos delimitados por um espaço em branco após o parâmetro -d\;
- temos na variável
HORACERTA nossa data e hora formatada e pronta para ser utilizada.
- Obs.: Todos os comandos devem estar na mesma linha. Foram colocados em diversas linhas para uma melhor clareza do código.
Acertando o relógio de nosso servidor
Agora que já conseguimos
capturar nossa data e hora correta é só passar para o comando
date de nosso
Linux.
%TERMINALon%
[root@backupgo root] date --set "$HORACERTA"
%TERMINALoff%
Tudo junto no cron
Gerando um script shell para fazer tudo
isso de uma vez.
%TERMINALon%
[root@backupgo root]# vi acerta_relogio.sh
HORACERTA=`lynx -dump
http://twiki.org/cgi-bin/xtra/tzdate?tz=America/Sao_Paulo |
grep "Date&time:" | cut -f 5,4,3,6 -d\ `;
# Precaução contra erro de conexão
# Obrigado Anderson Alves em 17/03/2005
if [ "$HORACERTA" = "" ]; then
date --set "$HORACERTA"
echo "Relógio ACERTADO: $HORACERTA"
else
echo "Falha ao obter hora, relogio nao atualizado."
fi
:wq
[root@backupgo root]# crontab -e
## Acerta o Relogio desta máquina com o Serviço de Tempo do TWiki
## Diariamente às 00:30 (meia noite e meia)
30 00 * * * /root/acerta_relogio.sh > /dev/null
%TERMINALoff%
E nossas estações Windows
Isso é mais fácil ainda, pois já temos um servidor
GNU/Linux com data/hora corretos instalado acima. Abra uma janela do
prompt de comando (alguns a conhecem como
DOS) e digite o comando abaixo:
%TERMINALon%
net time ip-do-servidor-linux /set /yes
%TERMINALoff%
Automatizando o processo
Onde temos uma grande quantidade de máquinas windows como estações, devemos ter um servidor local atuando como PDC e colocar no
script de logon do domínio o trecho do
DOS acima.
Referências
--
JarbasJunior - 18 Mar 2005