sudo: Jack of all trades, master of some

Asegura las descargas de archivos zip

8 comentarios

Diariamente tengo que descargar las actualizaciones de Segurmática Antivirus (bueno, yo no, un script lo hace automáticamente por mí), en ocasiones resulta que el archivo remoto tiene problemas por alguna razón u otra generando situaciones incómodas para mí y para los usuarios. Para prevenir la situación anterior modifiqué el script que tenía quedando de la siguiente manera:

#!/bin/bash

SRC="http://ftp.jovenclub.cu/antivirus/updates/segurmatica/segav/SegAV-Update.zip"
DST="/export/public/antivirus/actualizaciones/segurmatica"
TMP="/tmp/SegAV-Update.zip"

wget $SRC -O $TMP

if [ $? -eq 0 ]
then
   unzip -t $TMP
   if [ $? -eq 0 ]
   then
       rm -r $DST/*
       mv $TMP $DST
       cd $DST
       unzip *.zip
   fi
fi

exit 0

Las tres variables utilizadas SRC, DST y TMP corresponden a origen, destino y ubicación temporal del archivo zip respectivamente. Primero el archivo se descarga en el directorio /tmp con el nombre original, si el código de salida de wget es igual a 0 (éxito) entonces el comando unzip -t verifica que el zip esté en buenas condiciones, si unzip genera el código de salida 0 (éxito) entonces se elimina el antiguo, se actualiza con el actual y se descomprime en el directorio final.

Si por el contrario, el código de salida es diferente de 0 (error) entonces no se hace nada y se mantiene el archivo antiguo evitando efectos indeseados. Por supuesto, el script se puede adaptar de manera que realice alguna acción cuando el archivo remoto tiene problemas, tales como notificar vía email al administrador.

Son bienvenidas las correcciones y las sugerencias.

Comentarios desactivados
  1. Rafael Castro 4 años atrás

    Ultimo parrafo dice “Si el código de salida es diferente de 0 (error) entonces no se hace nada” …. Yo no se nada de programacion, pero creo que deberia decir: Si el codigo de salida es igual a 0

    1. @Rafael Castro

      Esa sentencia está correcta. En Bash las salidas de los comandos se tratan como error o como éxito, cualquier salida diferente de cero (0) es considerada un error. Espero que me haya hecho entender. Gracias por comentar.

      1. Rafael Castro 4 años atrás
        @oneohthree

        Gracias por la aclaración

  2. Durante algún tiempo intenté utilizar un script (engendro nacido de tres scripts recopilados de la intranet cubana).
    La intención era hacer un mirror de la actualización del nod32 y no tener que bajar los archivos comprimidos (.zip), esto me consumiría todo el “estrecho de banda”.
    El script usaba lftp y hacía algo muy similar a lo que hace este que hoy muestras aquí.
    Pero … la realidad, la dura realidad … el script nunca fue muy obediente que digamos, no cumplia su cometido muy bien … y por otro lado, el dichoso nod32 siempre daba errores con las supuestas actualizaciones que el monstrutito generaba.
    Voy a ver si meto pa’ “manipulación genética” y le trastéo el código con estos “genes” que mencionas aquí que parecen mucho más eficientes. Supongo que sea mejor wget que lftp para estos menesteres.

  3. ada

  4. Esta muy bueno el script pero es mas eficiente descargar el segurmatica con la herramienta que ellos mismos proveen que descarga todos los ficheros una sola vez y despues solo descarga los ficheros que son diferentes. Esta herramienta la uso hace tiempo en windows y estoy tratando de que me funcione tambien en linux.

    1. @jhonny

      si es verdad al igual la uso, en linux, para los que contamos con poco ancho de banda trabaja bien esta herramienta Replicator. pero actualmente pienso usar el script pues esta herramienta ahí veces que da sus problemitas y no descarga o empieza y se queda en el 70%.

  5. Ojo, el post no se trata de descargar actualizaciones para Segurmática, solo puse el ejemplo para describir la solución.