O texto abaixo contém um script shell para atualização automática da tabela de vírus do uvscan (o antivírus da McAfee/NAI). Eu mantenho este antivírus (que é um software comercial) instalado em uma série de servidores (de e-mail e de arquivos) Linux, para limpar os arquivos que os usuários de Windows lá armazenam, e para impedir que eles recebam e-mails infectados. Ativando este script para execução automática de hora em hora eu me preocupo menos com a possibilidade de deixar meus usuários desprevenidos contra algum vírus novo ;-)
Eu obtive este script em um arquivo antigo de lista de discussão, com o nome de auto_update_uvscan. Mas ele não era atualizado desde 2001, e continha alguns erros de sintaxe (além de apontar para URLs não mais existentes no site da NAI). Aparentemente o autor do original foi o Jorge Becerra (jorgeATsodatec.org), mas a versão que eu recebi estava bastante alterada (e sem assinaturas), e eu tive que alterar mais um pouco para fazer funcionar.
Este script tem uma vantagem sobre alguns outros que eu já vi anteriormente, porque ele usa o lynx para fazer o acesso ao site FTP da NAI. Ao contrário de vários outros clientes FTP, o lynx suporta o uso de proxies http (como o squid) para acesso a servidores de ftp, assim você pode usar este script mesmo se sua rede for isolada. Outra alternativa para esta mesma finalidade seria o wget.
O script está completo a seguir - basta copiar e colar, gravar em um arquivo como "/usr/local/bin/auto-update-uvscan" e torná-lo executável com o comando "chmod a+rx /usr/local/bin/auto-update-uvscan".
Para configurar a execução automática em horários pré-determinados, consulte a nossa dica sobre o cron.
O script
#!/bin/bash # dat_update # Original por Jorge Becerra jorgeATsodatec.org # # Recebido em versão alterada, e alterado mais um pouco por: # Augusto Campos (brain@br-linux.org) 07/2003 # # Comentário do autor original: # Feel free to use the script and distribute # if you found any mistake, please email the author # # A versão atual funciona para mim, mas se alguém acrescentar # características, ou limpar o código, favor me mandar uma cópia. # # proxy - descomente para configurar, se você precisar #http_proxy="http://proxy.foo.br:3128/" #ftp_proxy="http://proxy.foo.br:3128/" # Where to get the nai update from FTPDIR="ftp://ftp.nai.com/pub/datfiles/english/" MAILTO="root" # Location of uvscan files UVSCANDIR="/usr/local/uvscan" UVSCAN="$UVSCANDIR/uvscan" # Location of files (check on your distribution) LYNX="/usr/bin/lynx" GREP="/bin/grep" CUT="/usr/bin/cut" WGET="/usr/bin/wget" CP="/bin/cp" RM="/bin/rm" ECHO="/bin/echo" MKDIR="/bin/mkdir" CAT="/bin/cat" TAR="/bin/tar" MAIL="/bin/mail" # # You don't need to change from here # At least if you don' know exactly what means :-) # if [ ! -x $UVSCAN ] ; then $ECHO "uvscan not installed on: $UVSCAN" exit fi if [ ! -x $LYNX ] ; then $ECHO "lynx not installed on $LYNX " exit fi cd $UVSCANDIR if [ ! -d tmp ]; then $MKDIR tmp fi cd tmp # Get the page from nai echo "Retrieving update list" $LYNX -dump "$FTPDIR" > nai.ls echo "Done" # Extract filename of last version $CAT nai.ls | $GREP 'ftp://ftp.nai.com' nai.ls | $GREP .tar | $CUT -c 7- | head -1 >nai.fn # Get current version VERSION_CURRENT=`cut -d - -f 2 nai.fn | cut -d . -f 1` if [ -z "$VERSION_CURRENT" ] ; then $ECHO "cant get uvscan current version" exit fi # Get version installed VERSION_USED=`$UVSCAN --version | $GREP "Virus data file" | $CUT -d" " -f4 | $CUT -c2-` $ECHO "Version - current : $VERSION_CURRENT" $ECHO "Version - used : $VERSION_USED" if [ -z "$VERSION_USED" ] ; then $ECHO "could not get version from $UVSCAN" exit fi if [ "$VERSION_USED" -ge "$VERSION_CURRENT" ] ; then $ECHO "Viruscan is up to date" exit fi $ECHO "Viruscan needs to be updated" DATNAME="dat-${VERSION_CURRENT}.tar" echo "downloading $FTPDIR$DATNAME - please wait" $WGET -c -o wupdate.log $FTPDIR$DATNAME if [ $? -eq 0 ]; then echo "downloaded ok" if [ ! -d extract ] ; then $MKDIR extract fi $RM -f extract/* $TAR --extract --directory extract < $DATNAME if [ ! $? -eq 0 ]; then $ECHO "ERROR extracting" exit fi $RM -f extract/*.exe $CP -f extract/* $UVSCANDIR/ $RM -f extract/* $MAIL -s "uvscan dat updated to version: ${VERSION_CURRENT}" $MAILTO < wupdate.log else $ECHO "error downloading" fi $RM -f wupdate.log
Postado por brain em julho 31, 2003 11:25 AM
» Postado por: todorov em julho 31, 2003 05:10 PM, 200.158.64.:
hmm, aproveitando a oportunidade vou postar o que eu fiz pra isso também.. é um pouco menor, porem nao manda email pra ninguem...
#!/bin/bash
#
#######################################
# atualiza_dat.sh v. 1.0 #
# #
# Script para fazer a atualização #
# automática da base de dados de #
# vírus do UVSCAN (McAffee) #
# #
# Obs.: Aconselha-se agendamento do #
# script no cron #
# #
#######################################
echo "1) Fazendo download do update.ini..."
wget http://download.nai.com/products/datfiles/4.x/nai/update.ini -O /tmp/avupdate.ini 2>&1 | >> /dev/null
echo "2) Verificando versão dos arquivos dat..."
VERSAO=`cat /tmp/avupdate.ini|grep DATVersion|cut -d = -f2`
VERSAO=${VERSAO:0:4}
ATUAL=`cat /usr/local/uvscan/dat_atual.ini`
ATUAL=${ATUAL:0:4}
echo " - Versão atual da máquina: $ATUAL"
echo " - Versão atual do ftp: $VERSAO"
rm -f /tmp/avupdate.ini
if [ $VERSAO != $ATUAL ]; then
echo " O anti-vírus encontra-se desatualizado."
echo "3) Baixando dats atuais..."
wget http://a64.g.akamai.net/7/64/2015/2002-12-31-10-12-28-300/download.nai.com/products/datfiles/4.x/nai/dat-$VERSAO.zip -O /usr/local/uvscan/dat.zip 2>&1 | >> /dev/null
echo "4) Descompactando arquivo zip..."
unzip -o /usr/local/uvscan/dat.zip -d /usr/local/uvscan 2>&1 | >> /dev/null
rm -f /usr/local/uvscan/dat.zip
echo $VERSAO > /usr/local/uvscan/dat_atual.ini
fi
echo -e "\nAnti-vírus atualizado!"
» Postado por: todorov em julho 31, 2003 05:11 PM, 200.158.64.:
errr, o script estava todo identado, mas o sistema de comentarios nao converteu os espaços/tabs... :(
» Postado por: Guaracy Tesch Junior em setembro 18, 2003 01:54 PM, 200.102.210:
Este meu manda e-mail para o administrador da rede se foi feita atualização ou se ficou continua com a versão anterior.
É só copiar e salvar com o nome up_dat_uvscan
e dar direitos de executar chmod +x erra isso.
#!/bin/bash
# Script para atualização do AntiVírus UVSCAN da NAI por FTP.
# E envio de e-mail com o relatório se foi feito atualização ou não!
# Modificado:
# +-------+
# | _ | Guaracy Tesch Júnior
# | °v° | Cel: (51)9944-7593 - ICQ 72932535|WIRELESS
# | /(_)\ | guaracy@infotesch.com.br
# | ^ ^ | http://www.infotesch.com.br
# +-------+
# As linhas estão comentadas para maiores esclarecimentos.
# Entra no Diretório do UVSCAN e Apaga os Arquivos Antigos.
cd /usr/local/uvscan
rm -rf update.ini
rm *.tar
#Faz o Donwload do Arquivo "update.ini" do FTP da NAI.
ftp -ivn ftp.nai.com << fimftp
user anonymous @ atualiza@av.com
binary
cd /pub/datfiles/english/
mget update.ini
fimftp
# Faz a Verificação da DAT Atual do Sistema.
DAT_AT=$(uvscan --version|grep "Virus data file"|cut -c 18-21)
# Faz a Verificação da DAT Que Tem Disponível do Arquivo "update.ini".
NEWVERSION=$(sed 's/.$//' update.ini|grep -i DATVersion=|cut -d'=' -f2 | head -1)
# Compara as Versões Das DAT's e Faz o Download da Mais Atualizada.
if [ $DAT_AT -lt $NEWVERSION ]; then
ftp -ivn ftp.nai.com << fimftp
user anonymous @ atualiza@av.com
binary
cd /pub/datfiles/english/
mget dat-$NEWVERSION.tar
fimftp
tar xvf dat-$NEWVERSION.tar
MSG="UVSCAN atualizado\n"
MSG="${MSG}Versão Antiga....: $DAT_AT\n"
MSG="${MSG}Versão Atualizada: $NEWVERSION\n\n"
else
MSG="Desnecessária a atualização.\n\n"
MSG="${MSG}Versão Corrente: $DAT_AT\n"
MSG="${MSG}Versão do FTP..: $NEWVERSION\n\n"
MSG="${MSG}Foi mantida a versão corrente.\n\n"
fi
# Defini as Variáveis Para o Envio do E-Mail.
Servidor=Nome_do_servidor
email01=Email_do@encarregado.com.br
# Envia E-mail Para o(s) Usuários Encarregados da Manutenção do Servidor.
/usr/sbin/sendmail -oi -t <<EOM
From: root
To: $email01
Subject: VirusScan - Relatório de Atualização
Relatório de atualização do VirusScan
---------------------------------------------------------------------------------------------
Verificação de Atualização Feita no Servidor $Servidor
$(echo -e $MSG)
Executado em `date "+%D %T"`
---------------------------------------------------------------------------------------------
UP_DAT_UVSCAN By Guaracy Tesch Júnior guaracy@infotesch.com.br
EOM
# Fim do Script
# By WIRELESS - 04:00:43 - 15/09/2003
» Postado por: Domingos Paraiso em outubro 16, 2003 02:08 PM, 200.165.8.6:
Também fiz um script que verifica se existe versão nova e só baixa se encontrar, envia email, torpedo (usando outro script) e gera log quando atualizar a versão.
-------------------------------------------------
#!/bin/sh
#
# atualiza viruscan
#
DIRETORIO_UVSCAN=/usr/local/uvscan
CELULAR_ADM="99999999"
cd $DIRETORIO_UVSCAN
# obtem a lista de arquivos do site da nai
echo "Verificando no site ftp.nai.com qual a versao mais atual..."
wget -nr ftp://ftp.nai.com/pub/antivirus/datfiles/4.x/
# separa o nome do arquivo atual
ARQUIVO_DAT=`cat .listing | cut -c40-51 | grep .tar`
echo "Arquivo mais recente: $ARQUIVO_DAT"
# verifica se vai ser preciso atualizar
ls dats | grep $ARQUIVO_DAT > /dev/null
if [ $? = 1 ]; then
echo "Atualizando..."
# pega o arquivo na internet
wget -nr ftp://ftp.nai.com/pub/antivirus/datfiles/4.x/$ARQUIVO_DAT
# descompacta
tar xvf $ARQUIVO_DAT
# move para o diretorio de backup
mv $ARQUIVO_DAT dats
# informando ao administrador
rm mail.tmp -f
echo "Aos administradores," >> mail.tmp
echo "" >> mail.tmp
echo "Uma nova atualizacao do antivirus foi feita hoje." >> mail.tmp
echo "O arquivo $ARQUIVO_DAT foi baixado do site ftp.nai.com" >> mail.tmp
echo "e instalado neste servidor, no diretorio `pwd` por um" >> mail.tmp
echo "script de atualizacao automatica." >> mail.tmp
echo "" >> mail.tmp
echo "-----------------------------" >> mail.tmp
echo "HighLan Solucoes Inteligentes" >> mail.tmp
echo "-----------------------------" >> mail.tmp
mail -s "Atualizacao do antivirus" root < mail.tmp
rm mail.tmp -f
DATA_LOG=`date +"%Y-%m-%d %H:%M"`
export MSG="$DATA_LOG HighLan(proxy): Antivirus atualizado ($ARQUIVO_DAT)"
# envia mensagem via torpedo ATL
export TO=$CELULAR_ADM
/usr/bin/php -q /root/.scripts/atl.php
else
echo "O sistema ja esta atualizado!"
fi
rm .listing -f
rm index.html -f
» Postado por: Raul em novembro 9, 2003 11:07 PM, 200.154.72.:
Ola tudo bem, achei muito interessante esses scripts, e gostaria de uma ajuda, desse tipo, bem eu keria atualizar uma base de dados com um arquivo php de 30 em 30 segundos, teria como me ajudar???
obrigado pela atencao.
» Postado por: Zithromax Online em setembro 24, 2004 06:23 AM, 65.75.139.9:
Zithromax online antibiotic.
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.