El gestor de descargas favorito de todo sysadmin debería de ser un script programado en bash. Perl también sería otra opción, pero soy menos hábil en ese lenguaje. Lo único que necesita el script son los comandos básicos (echo, awk), uno para comprimir (gzip) y el que vamos a usar para descargar (wget).
El script es el siguiente:
Pastie | Mystic Paste
-----------------[ descarga.sh ]-----------------
#!/bin/bash WGET_OPTS="-c" graba_msg_error() { ERRORNO=$1 case $ERRORNO in 0) MSG_ERR="No problems occurred." ;; 1) MSG_ERR="Generic error code." ;; 2) MSG_ERR="Parse error --- for instance, \ when parsing command-line options, the .wgetrc \ or .netrc..." ;; 3) MSG_ERR="File I/O error." ;; 4) MSG_ERR="Network failure." ;; 5) MSG_ERR="SSL verification failure." ;; 6) MSG_ERR="Username/password authentication \ failure.";; 7) MSG_ERR="Protocol errors." ;; 8) MSG_ERR="Server issued an error response." ;; *) MSG_ERR="Unknown." ;; esac echo "(**) RESULTADO DEL COMANDO: $ERRORNO -- \ $MSG_ERR" >>$NOMBRE.log } while read LINEA;
do
NOMBRE=$( echo $LINEA | awk '{print $1}' ) URL=$( echo $LINEA | awk '{print $2}' ) echo -n "Descargando $NOMBRE desde $URL..." wget $WGET_OPTS -o $NOMBRE.log -O $NOMBRE "$URL" N_ERROR=$? graba_msg_error $N_ERROR gzip -v9 $NOMBRE.log >>$NOMBRE.log 2>&1
if [ $N_ERROR == "0" ]; then echo "OK" else echo "ERROR!" echo "=> N_ERROR = $N_ERROR, ver el log para \ mas informacion." fi done <$1
-----------------[ descarga.sh ]-----------------
El modo de empleo es:
./descarga.sh <fichero_urls.txt>
El parámetro <fichero_urls.txt> es un fichero con líneas, donde en cada línea pones el nombre del fichero y la URL que quieres descargar. Por cada descarga se genera un fichero .log con la salida del comando wget (además de grabarse el fichero de la descarga si esta ha sido correcta). El flag "-c" que se pasa a wget sirve para continuar las descargas que estuvieran a medias. Como característica adicional, se ha programado una función (graba_msg_error) para el control de errores de wget.
No hay comentarios:
Publicar un comentario