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.
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.
# 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
# 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:
[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.
[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:
[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 ??
[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 é:
*** 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...)