====== Descarga automática de actualización para Segurmática AntiVirus ======
Dado que nuestro país ha regulado que el único antivirus oficialmente autorizado para las estaciones de trabajo sea el Segurmática Antivirus (SegAV), conviene hacer regularmente un espejo de las actualizaciones para el uso institucional.
Lamentablemente, la herramienta proporcionada por Segurmática para realizar esta tarea desde Linux (Replicator) no siempre funciona, de modo que en este simple //script// mostraremos cómo lograr lo mismo utilizando los comandos ''wget'', ''grep'', ''sed'' y un poco de [[expresiones_regulares_pcre|expresiones regulares]].
#!/bin/sh
# segav.sh
# Script de descarga de actualizaciones para Segurmática AntiVirus
# Versión 0.3 (2013-07-03), Hugo Florentino
# Nota: programar la ejecución como superusuario
# Definir directorios
SAVDIR="/opt/segurmatica"
SAVACT="/var/www/segav"
SAVTMP="/var/tmp/segav"
# URL de la página de descargas de Segurmática
SEGURL="http://www.segurmatica.cu/descargas/index.php"
# URL de origen de las actualizaciones
SAVURL="http://www.segurmatica.cu/descargas/actualizaciones/segavzip"
# Definir cadenas y códigos de error
MSAV01="Actualizador de SegAV"
MSAV02="Terminada la comprobación / creación de directorios."
MSAV03="Obteniendo el nombre del archivo de actualización..."
MSAV04="El archivo de actualización es "
MSAV05="Eliminando archivos temporales anteriores..."
MSAV06="Iniciando la descarga de la actualización..."
MSAV07="La actualización se descargó exitosamente."
MSAV08="Eliminando directorios de actualizaciones anteriores..."
MSAV09="Listo. Procediendo a extraer la actualización actual..."
MSAV10="La operación ha concluido exitosamente."
ESAV01="Imposible obtener el archivo de actualizaciones.\nCompruebe que hay acceso al sitio de Segurmática."
ESAV02="Ocurrió algún problema durante la descarga de la actualización."
ESAV03="Ocurrió algún problema al extraer la actualización."
# Inicio de la ejeución
echo $MSAV01
# Crear directorios si no existen
mkdir -p "$SAVACT" "$SAVTMP"
echo $MSAV02
# Obtener el nombre del archivo de actualización
echo $MSAV03
SAVNOM=`wget -q "$SEGURL" -O- | grep "/actualizaciones/segavzip/" | sed -r "s/(.*)(\/actualizaciones\/segavzip\/)([0-9]+\.zip)(.*)/\3/"`
# Si se pudo obtener el nombre:
if [ ! -z $SAVNOM ]; then
echo -n "$MSAV04" && echo "$SAVNOM."
# Eliminar archivos de actualizaciones anteriores
echo $MSAV05
find "$SAVTMP" -type f ! -name "$SAVNOM" -print0 | xargs -0 rm -f
# Descargar el archivo actual de actualización
echo $MSAV06
wget -c "$SAVURL/$SAVNOM" -O "$SAVTMP/$SAVNOM" -o "$SAVDIR/wget.log"
# Si el archivo se descargó sin errores:
if [ $? -eq 0 ]; then
echo $MSAV07
# Obtener el nombre del directorio donde se va a descomprimir
SAVNOMDIR=`echo "$SAVNOM" | sed -r "s/([0-9]+)\.zip/\1/"`
# Eliminar directorios de actualizaciones anteriores
echo $MSAV08
find "$SAVACT" -type d ! -name "$SAVNOMDIR" -print0 | xargs -0 rm -fR && echo $MSAV09
# Extraer la actualización actual
unzip -o "$SAVTMP/$SAVNOM" -d "$SAVACT" && echo $MSAV10
else
echo $ESAV02
fi
else
echo $ESAV01
fi
exit 0
El script puede colocarse donde quiera (digamos en ''/opt/segurmatica/'')((Evidentemente, al //script// también se le deben asignar permisos de ejecución, por ejemplo: ''sudo chmod 755 /opt/segurmatica/segav.sh'')) y programarse en el crontab del superusuario,((Para invocarlo, ejecutar ''sudo crontab -e'')) por ejemplo:
00 05 * * Mon-Fri /opt/segurmatica/segav.sh > /opt/segurmatica/segav.log 2>&1
===== Atribuciones =====
* **Autor:** Hugo Florentino