Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Horário de Verão - 2008
Colaboração: Smailli Hemori Moraes
Data de Publicação: 26 de September de 2008
Todos aqui no Brasil sabemos que o horário de verão não obedece um dia
fixo para inicio ou fim e é por isso que todo ano temos que gerar um novo
/etc/localtime com as informações de horário de verão do ano em questão.
Agora se você esta cansado de todo ano ser a mesma coisa.
Cria arquivo texto, cria o binario com o zic, copia para /etc...
É só utilizar o script abaixo.
#!/bin/bash
ANO_INICIO="2008" #Ano que inicia o Horario de verao
ANO_FIM="2009" #Ano que finaliza o Horario de verao
DIA_INICIO="Oct 19" #Mes (abreviado em Ingles) e dia que inicia o horário de verão
DIA_FIM="Feb 15" #Mes (abreviado em Ingles) e dia que finaliza o horário de verão
RM=/bin/rm
CP=/bin/cp
BIN=/usr/sbin/zic
ZDUMP=/usr/sbin/zdump
MD5BIN=/usr/bin/md5sum
SERVICE=/sbin/service
ZIC=/usr/share/zoneinfo/Brazil/verao.$ANO_INICIO-$ANO_FIM.zic
EAST=/usr/share/zoneinfo/Brazil/East
LOCALTIME=/etc/localtime
echo -ne "\nVerificando a existencia do programa $BIN"
if [ -x $BIN ] ; then
echo -ne "\t\t\t\t\E[32m[ OK ]\n" ; tput sgr0
else
echo -ne "\t\t\t\t\E[31m[ERRO]\n" ; tput sgr0
exit
fi
echo -ne "\nCriando o arquivo de configurações do horário de verão $ANO_INICIO-$ANO_FIM"
cat > $ZIC << EOF
Rule Brazil $ANO_INICIO only - $DIA_INICIO 00:00 1 S
Rule Brazil $ANO_FIM only - $DIA_FIM 00:00 0 -
Zone Brazil/East -3:00 Brazil BR%sT
EOF
SAIDA=$?
if [ $SAIDA = 0 ] ;then
echo -ne "\t\t\E[32m[ OK ]\n" ; tput sgr0
else
echo -ne "\t\t\E[31m[ERRO]\n" ; tput sgr0
exit
fi
echo -ne "\nCriando o binário com as informações do horário de verão $ANO_INICIO-$ANO_FIM"
if $BIN $ZIC ;then
echo -ne "\t\t\E[32m[ OK ]\n" ; tput sgr0
else
echo -ne "\t\t\E[31m[ERRO]\n" ; tput sgr0
exit
fi
echo -ne "\nRemovendo informações do horário de verão antigo"
if $RM $LOCALTIME ;then
echo -ne "\t\t\t\t\E[32m[ OK ]\n" ; tput sgr0
else
echo -ne "\t\t\t\t\E[31m[ERRO]\n" ; tput sgr0
exit
fi
echo -ne "\nAtivando as configurações para o horário de verão $ANO_INICIO-$ANO_FIM"
if $CP $EAST $LOCALTIME ;then
echo -ne "\t\t\t\E[32m[ OK ]\n" ; tput sgr0
else
echo -ne "\t\t\t\E[31m[ERRO]\n" ; tput sgr0
exit
fi
echo -ne "\nVerificando o status da ativação"
GREP=`echo $ANO_INICIO | cut -c 4``echo $ANO_FIM | cut -c 4`
DUMP=`zdump -v Brazil/East |grep 200[$GREP] | wc -l`
if [ "$DUMP" == "4" ] ; then
echo -ne "\t\t\t\t\t\t\E[32m[ OK ]\n" ; tput sgr0
else
echo -ne "\t\t\t\t\t\t\E[31m[ERRO]\n" ; tput sgr0
exit
fi
echo -ne "\nReiniciando o crontab\n\n"
$SERVICE crond restart
Então é só criar o script acima, alterar as variáveis ANO_INICIO, ANO_FIM,
DIA_INICIO e DIA_FIM conforme o exemplo do horário de verão desse ano rodar
o script em seus servidores e estações e ir tomar uma cerveja para comemorar.
Lembrando que esse script foi homologado para sistemas baseados em Red Hat mas deve funcionar em outros com a modificação das variáveis dos binários ou sem modificação de nada.
Veja a relação completa dos artigos de Smailli Hemori Moraes
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.
Avalie esta dica
Opinião dos Leitores
04 Nov 2008, 15:40
TaLy..Brigada pelas Informaçoes..Abraços..
_________________________________________
Olá...É muito legal saber sobre o horário
de verão saber sobre noticias legais cada vez mais...adorei mesmo Obrigada abraços.Muito Grata:
BÁRBARA...
04 Nov 2008, 13:51
21 Out 2008, 00:24
Até pessoal.
15 Out 2008, 18:10
Tente tirar os espaços das linhas, isso eh um problema na formatação do arquivo... provavelmente vc copiou e colou com os espaços.
Moraes parabens pelo script... vai ajudar muita gente !!!
Abraços
13 Out 2008, 10:09
[root@oriba ~]# sh horario_verao.sh
Verificando a existencia do programa /usr/sbin/zic [ OK ]
Criando o arquivo de configurações do horário de verão 2008-2009grep: [ ou [^ descasados
Obrigado!
29 Set 2008, 21:17
Deu certo...
rs :-)
Não tinha percebido que o ntpdate, está agendado no crontab.
eheheheheh
Muito bom, seu script.
Abraços.
Até +
JBrasil.
29 Set 2008, 17:27
Alterei a hora do linux para 23:58 dia 18/10/08
E simulei, agendando no crontab.
00 00 19 10 * /root/scripts/horarioverao.sh > /var/log/horarioverao.log
Porém, ocorreu um erro.
Veja:
[root@serverteste ~]# more /var/log/horarioverao.log
Verificando a existencia do programa /usr/sbin/zic [ OK ]
Criando o arquivo de configurações do horário de verão 2008-2009 [ OK ]
Criando o binário com as informações do horário de verão 2008-2009 [ OK ]
Removendo informações do horário de verão antigo [ OK ]
Ativando as configurações para o horário de verão 2008-2009 [ OK ]
Verificando o status da ativação [ERRO]
[root@serverteste scripts]# date
Sáb Out 18 23:59:47 BRT 2008
[root@serverteste scripts]# date
Dom Out 19 01:00:00 BRST 2008
[root@serverteste scripts]# date
Seg Set 29 17:21:07 BRT 2008
Ele adiontou uma hora(correto), e depois voltou a hora corrente.
O que pode ser ?
Obrigado.
JBrasil.
29 Set 2008, 14:58
29 Set 2008, 11:23
-bash: ./horarioverao.sh: /bin/bash^M: bad interpreter: Arquivo ou diretório não encontrado
Conferi os binários, está tudo ok.
O que pode ser ?
Obrigado.












