#!/bin/sh # # Al tener 2 directorios distintos para las descargas y los archivos listos, # nos ahorramos hacer un md5 para determinar si el archivo ya esta pronto o no # innecesariamente y ademas es mas seguro puesto que solo los archivos que # tienen un md5 coincidente con la base de datos de APT son movidos al # directorio de archivos listos. # # El DirDescargados y el DirListos pueden ser relativos o absolutos. # # Ivan. Ayuda() { cat < Descripcion: Genera un script que se encarga de bajar los paquetes necesarios para efectuar el comando de APT especificado en la maquina que se ejecuto. Este script generado se corre en algun lugar con buena conexion a Internet, las primeras lineas del mismo son para configuracion, genera un par de directorios, uno para las descargas y otro para los archivos ya listos. Luego de finalizar la descarga de archivos solo el directorio "DirListos" debera ser copiado en algun medio y luego su contenido copiado en el directorio "/var/cache/apt/archives". Al ejecutar el mismo comando de APT en la maquina original ya encontrara los archivos descargados. Ejemplos: #micompu> $0 dist-upgrade > midescarga.sh #internet> sh midescarga.sh #internet> cp listos/* /mnt/flash #micompu> cp /mnt/flash/* /var/cache/apt/archives #micompu> apt-get dist-upgrade #micompu> $0 install mozilla > midescargademozilla.sh #internet> sh midescargademozilla.sh #internet> cp listos/* /mnt/flash #micompu> cp /mnt/flash/* /var/cache/apt/archives #micompu> apt-get install mozilla FINT } Accion="$@" if [ "$Accion" = "" ]; then Ayuda exit 0 fi echo '#!/bin/sh ComandoDescarga="wget --limit-rate=10k --tries=5 --timeout=30 --continue --no-directories --glob=off" DirDescargados="descargados" DirListos="listos" mkdir -p "$DirDescargados" mkdir -p "$DirListos" Descargar() { URL="$1" ArchDest="$2" MD5="$3" if [ -f "$DirListos/$ArchDest" ]; then echo "LISTO: $ArchDest." return 0 fi cd "$DirDescargados" $ComandoDescarga "$URL" cd - ArchOrig=$(basename "$URL") MD5Desc=$(md5sum "$DirDescargados/$ArchOrig" | cut -f1 -d" ") if [ "$MD5" = "$MD5Desc" ]; then mv "$DirDescargados/$ArchOrig" "$DirListos/$ArchDest" echo "LISTO: $ArchDest." return 0 else echo "MD5 Invalido: $ArchOrig." return 1 fi } ' apt-get -qq --force-yes --ignore-hold --print-uris -d $Accion | \ awk '{ print "Descargar " $1 " '\''" $2 "'\'' '\''" $4 "'\''" }' echo ' echo "*** Descargas Terminadas ***" '