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.
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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários