====== 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