br-linux

Artigos br-linux.org
Artigos sobre Linux em bom português, originais e com qualidade

O texto abaixo foi publicado no BR-Linux antes de 2005, e está mantido aqui por razões históricas. Veja o material atualizado diariamente do BR-Linux em http://br-linux.org
Atualização automática para arquivos do uvscan
Publicado em 31 de julho de 2003
 

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



Comentários para "Atualização automática para arquivos do uvscan"

» 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: aleffi em janeiro 10, 2004 08:23 AM, 200.199.129:

    eu queria atualização do antivirus

 

» Postado por: Zithromax Online em setembro 24, 2004 06:23 AM, 65.75.139.9:

    Zithromax online antibiotic.

 

» Postado por: Amoxicillin em outubro 4, 2004 12:28 PM, 65.75.139.9:

    Information on Amoxicillin

 

» Postado por: Cialis em outubro 8, 2004 05:15 PM, 65.75.139.9:

    Cialis information site.

 

» Postado por: Levaquin em outubro 12, 2004 05:07 PM, 65.75.139.9:

    Info on Levaquin online.

 

» Postado por: Seasonale em outubro 14, 2004 11:53 AM, 65.75.139.9:

    Seasonale online site.

 

» Postado por: Remeron em outubro 22, 2004 02:58 PM, 65.75.139.9:

    Remeron information.

 

» Postado por: Elidel online em novembro 2, 2004 12:57 PM, 208.53.138.:

    Elidel information.

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)

Envie seu comentário









Lembrar as informações pessoais?


Atenção: Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum, onde mais pessoas estarão disponíveis para respondê-lo..






Nota: os comentários pertencem a seus respectivos autores e são de responsabilidade de quem os postou. O restante desta nota está disponível sob a licença GNU FDL, exceto se explicitamente declarado em contrário.