Torne o seu servidor um mirror de atualização do Antivírus AVG (revisão)

Em Setembro elaborei um tutorial que permitia transformar um servidor Linux em um mirror de atualização do AVG, entretanto a Grisoft alterou a estrutura de pastas. Sendo assim, segue a nova versão do tutorial.

[ Hits: 54.801 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 01/10/2003 | Blog: http://assuntonerd.com.br


A estrela deste tutorial (o script)



Este script efetua o download do arquivo avg6info.ctf, que contém a lista dos arquivos de atualização, data e versão. Após o download ele verifica se existe algum arquivo a ser baixado, verificando a existência no disco de cada um deles.

Se o arquivo avg6info.ctf não foi baixado com sucesso, ele volta o seu backup. Em caso de erro no processo de download, o script envia um e-mail aos administradores do sistema, cujos e-mails deverão estar no arquivo adm.

Agora, se todo o script de atualização foi executado com sucesso, será enviado um e-mail à todos os clientes definido no arquivos clientes. Os arquivos da atualização anterior serão apagados para não consumir um significativo espaço em disco.

Criando o script principal, o updateAVG:

# cd /bin
# vi updateAVG


Coloque o seguinte conteúdo no arquivo:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/

# Criei 3 variáveis em disco em função da dificuldade de exportar os seus
# conteúdos após os loops deste scripts.
#
# As variáveis são:
# erro: seu conteúdo informa se houve alguma erro durante a execução do script
# email: seu conteúdo informa se haverá envio de e-mail
# apagar: esta variável define se o script apagara os arquivos da atualização anterior

echo false > /tmp/erro.tmp
echo false > /tmp/email.tmp
echo false > /tmp/apagar.tmp

# Verificando o Link 1:
cd /home/httpd/html/softw/60/xx/

# Criando o Backup do arquivo
mv avg6info.ctf avg6info.ctf.old

# Download do arquivo de informação
wget -r -nd -t 3 -w 10 http://files.grisoft.cz/softw/60/xx/avg6info.ctf

# Loop de leitura do conteúdo do arquivo
cat avg6info.ctf | grep bin | cut -c 2-13 > lista.txt

cat lista.txt | while read mArquivo
do
  if [ ! -f $mArquivo ]
  then
    # Se o arquivo existir, faça o download
    # Se ocorrer algum erro, seta a variável, caso contrário muda o
    # atributo do arquivo e setar a variável responsável para exclusão
    # dos arquivo antigos e a variável de envio de e-mail
    wget -r -nd -t 3 -w 10 http://files.grisoft.cz/softw/60/xx/$mArquivo
    if [ "$?" = "1" ];
    then
      echo true > /tmp/erro.tmp
    else
      chmod 755 $mArquivo
      echo true > /tmp/apagar.tmp
    fi
    echo true > /tmp/email.tmp
  fi
done

# ler o conteúdo da variável no disco
email=`cat /tmp/email.tmp`
erro=`cat /tmp/erro.tmp`
apagar=`cat /tmp/apagar.tmp`

# Se não houve nenhum erro, entre na rotina de exclusão dos arq. Antigos.
if [ "$erro" = "false" ]
then
  if [ "$apagar" = "true" ]
  then
    # Se a variável apagar estiver habilitada, então proceda com
    # a rotina de exclusão.
    cat avg6info.ctf.old | grep bin | cut -c 2-13 > lista.txt
    cat lista.txt | while read mArquivo
    do
      # Se o arquivo existir, então o apague!
      if [ -f $mArquivo ]
      then
         rm -rf $mArquivo
      fi
    done
  fi

  # Apaga o antigo arquivo de informação
  rm avg6info.ctf.old
else
  # se houve erro, então volte o arquivo de informação antigo
  rm -rf avg6info.ctf
  mv avg6info.ctf.old avg6info.ctf
fi

# Desabilita a variável apagar
echo false > /tmp/apagar.tmp

# Verificando o Link 1:
cd /rede/web/softw/60/fe/

# Criando o Backup do arquivo
mv avg6info.ctf avg6info.ctf.old

# Download do arquivo de informação
wget -r -nd -t 3 -w 10 http://files.grisoft.cz/softw/60/fe/avg6info.ctf

# Loop de leitura do conteúdo do arquivo
cat avg6info.ctf | grep -v xx | grep bin | cut -c 2-13 > lista.txt
cat lista.txt | while read mArquivo ;

do
  if [ ! -f $mArquivo ]
  then
     # Se o arquivo existir, faça o download
     # Se ocorrer algum erro, seta a variável, caso contrário muda
     # o atributo do arquivo e setar a variável responsável para
     # exclusão dos arquivo antigos e a variável de envio de e-mail
     wget -r -nd -t 3 -w 10 http://files.grisoft.cz/softw/60/fe/$mArquivo
     if [ "$?" = "1" ];
     then
       echo true > /tmp/erro.tmp
     else
       chmod 755 $mArquivo
       echo true > /tmp/apagar.tmp
     fi
     echo true > /tmp/email.tmp
  fi
done

# ler o conteúdo das variáveis no disco
email=`cat /tmp/email.tmp`
erro=`cat /tmp/erro.tmp`
apagar=`cat /tmp/apagar.tmp`

# Se não houve nenhum erro, entre na rotina de exclusão dos arq. Antigos.
if [ "$erro" = "false" ];
then
  if [ "$apagar" = "true" ]
  then
    # Se a variável apagar estiver habilitada, então proceda com
    # a rotina de exclusão.
    cat avg6info.ctf.old | grep -v xx | grep bin | cut -c 2-13 > lista.txt
    cat lista.txt | while read mArquivo
    do
      # Se o arquivo existir, então o apague!
      if [ -f $mArquivo ]
      then
        rm -rf $mArquivo
      fi
    done
fi

# Apaga o antigo arquivo de informação
rm avg6info.ctf.old

if [ "$email" = "true" ]
then
   # Se a variável e-mail estiver setada então envia email aos clientes
   /bin/emailsok
else
   # se houve erro, então volte o arquivo de informação antigo
   rm -rf avg6info.ctf
   mv avg6info.ctf.old avg6info.ctf
   if [ "$email" = "true" ]
   then
      # Se a variável e-mail estiver setada então envia email
      # aos administradores
      /bin/emailserro
   fi
fi

Agora vamos dar o direitos de execução para o nosso script:

# chmod 755 updadeAVG

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Criando o mirror da AVG
   3. Configurando as estações
   4. A estrela deste tutorial (o script)
   5. O envio de e-mail (opcional)
   6. Agendando o script
   7. Download dos scripts
Outros artigos deste autor

ARToolKit: Criando aplicativos de Realidade Aumentada

Compilador Clipper open-source, compile sem problemas os sistemas .PRG no Linux!

OneAPI: A plataforma da Intel para facilitar o desenvolvimento com chips Intel, AMD, ARM, NVIDIA POWER e FPGA

Criando aplicativos para o iPhone no Linux (sem Xcode e MacOS X)

TerminatorX: Linux nas discotecas para os DJs!

Leitura recomendada

LogBook: Documentação de implementação e manutenção

Ultimate Boot CD - Um Fantástico "Canivete Suíço" para recuperar seu Linux

Usando o NIS/NFS como ferramentas de centralização de controle de rede

Nagios Falante

Babytrans, o Babylon for Linux

  
Comentários
[1] Comentário enviado por fabio em 01/10/2003 - 15:03h

Nesta segunda versão do tutorial que fui perceber a importância do mesmo. Antes eu não sabia que o AVG é um software de antivírus freeware para Windows e para quem não sabe, esta é uma solução perfeita para quem deseja ter uma rede heterogênia segura e não quer gastar com licenças de antivírus.

[2] Comentário enviado por fabio em 02/10/2003 - 17:06h

Alessandro,

Qual é o tamanho em disco aproximado que o mirror do AVG ocupa?

[3] Comentário enviado por cabelo em 02/10/2003 - 17:25h

No máximo 10Mb

[4] Comentário enviado por fabio em 04/10/2003 - 02:44h

Acrescentando 1 byte, na página 2 do artigo aconselho a adição da opção -np (--no-parent) ao comando wget. No meu caso fui baixar o mirror sem esta opção, quando fui ver já tinha 150 mb de arquivos no diretório e nem sinal de fim de download, pois ele ascendeu para o diretório acima e assim sucessivamente. Digitem "man wget" e procurem por essa opção para entender melhor. Sendo assim, os comandos wget ficariam:

wget -r -np -nd http://files.grisoft.cz/softw/60/fe
e
wget -r -np -nd http://files.grisoft.cz/softw/60/xx

[5] Comentário enviado por proteus em 15/01/2004 - 14:54h

não consigo fazer o download dos scripts do site do cabelo e o que esta listado na pagina deu erro (falta fechar um if), modifiquei para enviar e-mails sem a aplicação em java

[6] Comentário enviado por stavale em 12/04/2004 - 15:51h

Estou executando o wget como descrito neste artigo mas sempre mostra a mensagem de tempo esgotado e nao consigo baixar.
Alguem saberia me explicar onde estou errando ??

valeu !

[7] Comentário enviado por cruel em 27/04/2004 - 10:50h

*** CORREÇÃO:

Os comandos para baixar os arquivos do site da Grisoft devem ter uma "/" no final senão será feito o download somente do arquivo index.html (pelo menos foi o que ocorreu comigo). O correto é:

wget -r -np -nd http://files.grisoft.cz/softw/60/fe/
wget -r -np -nd http://files.grisoft.cz/softw/60/xx/


*** OBSERVAÇÕES:
- O espaço total utilizado para criação do mirror foi de 30.048Kb
(ele baixou várias versoes do programa (avg6523fu_free.exe ...) e versões de atualização antigos.
O script nao irá apagar esses arquivos antigos???

*** DÚVIDAS:
- É preciso mesmo comentar as linhas /bin/emailserro e /bin/emailsok para não utilizar o recurso de email ? A variavel /tmp/email.tmp nao faz esse papel dentro do script?
- O script irá sempre baixar todas as versões dos arquivos de atualização ou somente a menor?
- Cabelo, cadê o seu cabelo?! :)

*** SUGESTAO:
- Seria interessante utilizar um sistema para envio de email usando um MTA (postfix, QMail, etc...)


Beleza esse script e essa dica!

Um abraço!

[8] Comentário enviado por silva.rodrigo em 07/04/2005 - 19:59h

Era o q realmente eu estava procurando, fiz a leitura agora vou aplicar.

Ótimo Artigo

Valew !

[9] Comentário enviado por CABELO em 02/11/2005 - 13:55h

O Agrimar Teixeira postou um script para a versão 7

http://www.vivaolinux.com.br/scripts/verScript.php?codigo=962

[10] Comentário enviado por casterman em 28/01/2006 - 15:02h

Muito Bom. execelênte alternativa para diminuir o fluxo de rede!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts