Tabla de Contenidos

Script para actualizar las bases del Antivirus y el Smart Security de ESET en Debian

En este artículo explicaremos como crear un script que nos permita actualizar nuestras bases de ESET Nod32 Antivirus y Smart Security. A diferencia de otras maneras de actualizar, con esta se descargarán solamente los archivos nuevos. Con esto nos ahorramos las molestias de descargar todos los archivos desde el principio.

El archivo de script

nodmirror.sh
#!/bin/bash
##################################################################################################
# ESETMirror v1.2
#
# Este programa es software libre. Puede redistribuirlo y/o
# modificarlo bajo los terminos de la Licencia Polica General
# de GNU segun es publicada por la Free Software Foundation,
# bien de la version 2 de dicha Licencia o bien segun su
# eleccion de cualquier version posterior.
#
# Copyright (C) 2012, DPJ Cienfuegos
# Authors: Exnier Gonzalez Jimenez <adminred@dpjcf.minjus.cu>
#
# Descripcion
# --
# Este script basado en "lftp" funciona con sitios FTP y HTTP, Util para hacer espejos
# de actualizaciones de antivirus sin necesidad de descargar todo desde el principio.
#
# Necesita poner una línea en su crontab.
# Para comenzar la descarga cada 1 hora del espejo.
#     00 */1 * * * /opt/eset/esetmirror.sh
#
# NOTA: Requerimientos
#       * "lftp(1)" Paquete lftp (Sophisticated command-line FTP/HTTP client programs)
#       * "zip(2)" Paquete zip (Archiver for .zip files)
#
#
# Cambios:
#               - 15/05/2012 v1.2 Crear Archivo de Informacion y actualizaciones semanales
#               - 27/11/2010 v1.1 Crear compactado con la Actualizacion
#               - 26/11/2010 v1.0 Primera version del NodMirror
#
##################################################################################################
 
# Definir Rutas
UPDATE="/var/www/antivirus"                                     # Ruta destino de la actualizacin
ZIP="$UPDATE/zip/"                                              # Ruta para los compactados
TMPDIR="/opt/esetmirror"                                        # Ruta temporal de trabajo
SERVER="http://10.16.11.125/antivirus/nod32v3/"	# Servidor de Actualizacion
 
# Opciones de lftp
OPCIONES="-c 10 --no-recursion --exclude="ess" --exclude="eav" --exclude="tmp" --exclude="test" --exclude="html" --exclude="info.txt" --log=$TMPDIR/update.log"
 
# Crear directorios
if ! [ -d $UPDATE ];
then
    mkdir -p $UPDATE $ZIP $TMPDIR $TMPDIR/semanal $TMPDIR/completa
fi
 
if ! [ -d $TMPDIR ];
then
    mkdir -p $TMPDIR $TMPDIR/semanal $TMPDIR/completa
fi
 
if [ -d $TMPDIR ];
then
cp $UPDATE/nod32v3/* $TMPDIR/completa/nod32v3
lftp -c mirror $SERVER $TMPDIR/completa/nod32v3 $OPCIONES
fi
 
# Borrando actualizacion anterior
rm -f $ZIP/*
 
# Compactar nueva actualizacion completa
cd $TMPDIR/completa
zip -r -9 -q "completa-$(date +'%Y%m%d').zip" *
mv *.zip $ZIP
cp -a $TMPDIR/completa/nod32v3 $UPDATE
 
# Copiar update para crear la semanal
cp -a $TMPDIR/completa/* $TMPDIR/semanal
 
#Borar en tmp de + de 7 dias
find $TMPDIR/semanal/nod32v3/* -mtime +15 -exec rm {} \;
 
#Compactar actualizacion Semanal
cd $TMPDIR/semanal
zip -r -9 -q "semanal-$(date +'%Y%m%d').zip" *
mv *.zip $ZIP
rm -R $TMPDIR/semanal/*
 
# Crear archivo de informacion
cat << EOF > "$UPDATE/info.txt"
 
ESETmirror v1.2 By Squall
=-=-=-=-=-=-=-=-=-=
 
Nombre: Actualizacion ESET Nod32
Desde: $SERVER
Fecha: $(date +'%d-%m-%Y')
Hora: $(date +'%R')
 
Actualizacion Completa "zip/completa-$(date +'%Y%m%d').zip"
Actualizacion Semanal "zip/semanal-$(date +'%Y%m%d').zip"
-- ----------
Departamento de Redes y Comunicaciones.
DPJ Cienfuegos
Ave 52 # 2704 e/ 27 y 29
Cienfuegos, Cuba, CP 55100
 
EOF
 
exit 0

Si se utiliza un proxy

Ah, muy importante: si se utiliza un proxy para acceder a internet tiene que modificarse el archivo '/etc/lftp.conf':

sudo nano /etc/lftp.conf

Modificamos la línea que contiene la cadena 'set http:proxy':

# http:proxy must comunicate with client over http protocol, e.g. squid.
## Default port is 3128
# set http:proxy your_http_proxy[:port]
set http:proxy 200.55.161.251:3128 --lo ponemos de esta forma si el servidor proxy no requiere autentificación
set http:proxy http://user:pass@200.55.161.251:3128 --lo ponemos de esta forma si el servidor proxy requiere autentificación.