Definindo horário de Verão

Certamente, se você administra servidores linux/unix, já parou pra pensar como fazer suas máquinas mudarem automaticamente o horário de verão.

Pois bem, neste tutorial mostrarei como automatizar esta tarefa chata e como criar seu próprio arquivo de configuração de horários de verão.

OBS: Caso você seja um cara super preguiçoso, vai encontrar na internet arquivos de tzdata prontos até 2030 ( ou mais ).

Vamos começar do começo 🙂

Identificando seu timezone

Para verificar o timezone, apenas digite um date como na figura abaixo:

Veja o identificador BRT, ele nos dirá em qual fuso nosso sistema esta 😉

Verificando se seu sistema está preparado para o horário de verão

O linux, por padrão, já traz algumas configurações de horário de verão.
Algumas pessoas(eu) ficam putas quando o servidor muda de horário sozinho, isso porque elas esquecem de verificar quando o horário muda.

Você poderá verificar para onde seu localtime aponta com o comando:

root@ubuntu:~# ls -al /etc/localtime
lrwxrwxrwx 1 root root 31 2011-02-21 10:06 /etc/localtime -> 
/usr/share/zoneinfo/Brazil/East
root@ubuntu:~# 

E você poderá ver o horário de verão usando o comando:

root@ubuntu:/etc# zdump -v /etc/localtime | grep 2011
/etc/localtime  Sun Feb 20 01:59:59 2011 UTC = Sat Feb 19 23:59:59
 2011 BRST isdst=1 gmtoff=-7200
/etc/localtime  Sun Feb 20 02:00:00 2011 UTC = Sat Feb 19 23:00:00
 2011 BRT isdst=0 gmtoff=-10800
/etc/localtime  Sun Oct 16 01:59:59 2011 UTC = Sat Oct 15 22:59:59
 2011 BRT isdst=0 gmtoff=-10800
/etc/localtime  Sun Oct 16 02:00:00 2011 UTC = Sun Oct 16 00:00:00
 2011 BRST isdst=1 gmtoff=-7200
root@ubuntu:/etc# 

Atente para o fato que o ZDUMP mostra os horários de mudança do timezone em UTC e no seu localtime, no meu caso BRT.

Bem, com os passos anteriores pudemos definir:
– Qual a data atual;
– Qual timezone estamos;
– Qual localtime está configurado em nossa máquina.

Configurando o horário de verão

Que tal estragar nossa máquininha?
Bem, vou usar um programa chamado ZIC para fazer a compilação de um novo horário de verão.

Vamos fazer a seguinte regra em nossa brincadeira:
No dia 23/03/2011 as 20:00 meu computador vai entrar em horário de verão adicionando 1h ao clock, e no dia 28/04/2011 as 22:00 meu computador vai sair do horário de verão.

Vamos explicar:

As duas primeiras linhas indicam o inicio e o fim do meu horário de verão. Observe que teremos apenas 1 hora de “Horário de verão”. ( as 20h ele vai virar para 21 e as 22h ele voltara para as 21h 😉 )

As regras para mudança do TZ e dos horários são especificadas pelo item RULE, já o ZONE identifica qual é a definição de meu GMT e de minha localidade, bem como pode alterar o identificador de summertime para conter algum caracter a mais.
No trecho da linha onde temos BR%sT o configurador esta informando que nosso sistema estará em BRT quando não estiver em horário de verão e BRST quando estiver! ( O “s” do BRST vem do último parametro da linha RULE, pode colocar outra letra pra ver. )

Aplicando as novas configurações

Com o nosso arquivo zic criado, vamos aplicar nossa nova configuração e testá-la! 😉

root@ubuntu:~# zic -d /usr/share/zoneinfo/  temp.zic  -v
"temp.zic", line 7: warning: time zone abbreviation has more than 3
 alphabetics (BRST) (rule from "temp.zic", line 2)
root@ubuntu:~# 

Fácil né?
Deixe-me apenas explicar uns pontos:
– O parametro -d informa o diretório que será carregado a nova config. Lembra que nosso ZONE era Brazil/East? Então, o zic vai substituir o conteúdo do arquivo /usr/share/zoneinfo/Brazil/East com a nossa configuração e, por consequência, nosso /etc/localtime já estará apontando para a nova config!
– O warning que apareceu é porque meu identificador pode ser BRST e o zic zica com isso. ( ahá, entendeu? zic zica zic zica 😉 )
– O -v só serve para mostrar informações da importação… Coloquei de bobeira ali…

Testando as configurações!!!!

Vamos verificar se tudo deu certo?!?!?!

dartanghan@ubuntu:~$ zdump -v /etc/localtime | grep 2011
/etc/localtime  Wed Mar 23 22:59:59 2011 UTC = Wed Mar 23 19:59:59
 2011 BRT isdst=0 gmtoff=-10800
/etc/localtime  Wed Mar 23 23:00:00 2011 UTC = Wed Mar 23 21:00:00
 2011 BRST isdst=1 gmtoff=-7200
/etc/localtime  Thu Apr 28 23:59:59 2011 UTC = Thu Apr 28 21:59:59
 2011 BRST isdst=1 gmtoff=-7200
/etc/localtime  Fri Apr 29 00:00:00 2011 UTC = Thu Apr 28 21:00:00
 2011 BRT isdst=0 gmtoff=-10800
dartanghan@ubuntu:~$ 

Com o comando acima, pode-se observar que no dia 23/Mar o meu computador vai mudar de horário.

Observe a imagem abaixo… ela fala mais que 1000 palavras …

Fantástico, não????

Deixe uma resposta