Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- dir_descargas="$HOME/descargas"
- fich_registro="$dir_descargas/.registro"
- media_bytes=0
- echo "*****************************************************************************************************"
- echo "¡¡IMPORTANTE!! Se debe tener en cuenta el idioma del sistema para modificar el nombre del directorio Descargas o "
- echo "Downloads en la variable dir_descargas"
- echo "*****************************************************************************************************"
- if [ "$#" -eq 0 ] || [ "$1" = "--help" ]; then
- echo "Script para controlar nuestras descargas."
- echo "Para usar el script: dowloader.sh [ --help | --estadisticas | --limpiar | --registro | url ]"
- echo "Opciones permitidas:"
- echo "--help: Muestra esta ayuda."
- echo "--estadisticas: Muestra las estadisticas de todas las descargas"
- echo "--limpiar: Elimina todo el contenido del directorio descargas."
- echo "--registro: Muestra el contenido del archivo de registro."
- exit 1
- fi
- #Si no existe el directorio descargas lo creamos.
- if [ ! -d "$dir_descargas" ]; then
- mkdir -p "$dir_descargas"
- fi
- # Se comprueba que el parámetro introducido es una opción del comando o una cadena de texto
- case $1 in
- "--estadisticas")
- bytes_totales=0
- num_ficheros=0
- for file in "$dir_descargas"; do
- if [ "$file" != "$dir_descargas" ]; then
- echo "contando ... $file"
- num_ficheros=$((num_ficheros + 1))
- bytes_totales=$((bytes_totales + $(stat -c %s "$file")))
- fi
- done
- [ "$num_ficheros" -gt 0 ] && media_bytes=$(($bytes_totales / $num_ficheros))
- echo "Cantidad de bytes descargados: $bytes_totales"
- echo "Numero de ficheros descargados: $num_ficheros"
- echo "Promedio de bytes por fichero: $media_bytes"
- ;;
- "--limpiar")
- read -p "Seguro que quieres eliminar todos los archivos del directorio descargas? (s/n): " respuesta
- if [ "$respuesta" = "s" ]; then
- rm "$fich_registro"
- rm -rf "$dir_descargas"/*
- echo "Se ha eliminado el contenido del directorio descargas."
- else
- echo "Cancelando accion.."
- fi
- ;;
- "--registro")
- if [ -f "$fich_registro" ]; then
- cat "$fich_registro"
- else
- echo "El archivo registro no existe o está vacío."
- fi
- ;;
- *)
- # En caso de que el parámetro sea una cadena de texto que no es como los parámetros esperados,
- # comprobamos que es una URL con una expresión regular (empieza http:// o https://)
- if [[ "$1" =~ ^(http|https)://[^\s]+ ]]; then
- # Si la URL ya se encuentra dentro del fichero de registro...
- if grep -q "$1" "$fich_registro"; then
- echo "La URL introducida ya ha sido descargada previamente."
- else
- # Si no, se intenta descargar
- wget --tries=5 --directory-prefix="$dir_descargas" "$1"
- echo "$1" >> $fich_registro
- fi
- else
- # El parámetro no es una URL válida
- echo "El parámetro introducido no es una URL"
- fi
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement