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: 56.290 ]

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

Instalando Ubuntu Touch no seu celular (Linux de bolso)

Instalando leitores de impressão digital modelo Digital Persona no Linux

Acessibilidade: Movimentos do mouse com a face (eViacam)

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

Efeitos tridimensionais nas seleções dos desktops virtuais

Leitura recomendada

Subversion (SVN) com autenticação pelo LDAP

Software livre, software comunitário!

Ferramentas incríveis! Converta diversos tipos de arquivos com o xPDF e ffmpeg

O que é Orientação a Objeto - Mais uma tentativa

Monitoramento de Comunicação - Blackbox Exporter(ICMP) + Prometheus + Grafana

  
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