#!/bin/bash # # Simple Debian image downloader. # # Parameters HASHES="MD5SUMS SHA1SUMS SHA256SUMS SHA512SUMS" # Arguments BASENAME="`basename $0`" URL="$1" BASE="`dirname $URL`" RATE="$2" FILENAME="`basename $URL`" # Syntax if [ -z "$1" ]; then echo "usage: $BASENAME " exit 1 fi # Determine signature extension if echo $FILENAME | grep -qe '^debian-live'; then SIGN="sig" else SIGN="sign" fi # Fetch hashes for hash in $HASHES; do wget -c $BASE/$hash wget -c $BASE/$hash.$SIGN done # Determine transfer method if echo $FILENAME | grep -qe '.jigdo$'; then # Check for jigdo if ! which jigdo-lite &> /dev/null; then echo "Please install jigdo-file" exit 1 fi # Get the image using jigdo jigdo-lite $URL # Fix filename FILENAME="`basename $FILENAME .jigdo`.iso" elif echo $FILENAME | grep -qe '.zsync$'; then # Check for zsync if ! which zsync &> /dev/null; then echo "Please install zsync" exit 1 fi # Get the image using zsync zsync $URL # Fix filename FILENAME="`basename $FILENAME .zsync`" else # Check for wget if ! which wget &> /dev/null; then echo "Please install wget" exit 1 fi # Set rate limit if [ ! -z "$RATE" ]; then LIMIT="--limit-rate=$RATE" fi # Get the image using wget wget -c $LIMIT $URL fi # Check hashes for hash in $HASHES; do echo "Checking $FILENAME against $hash file..." check="`echo $hash | tr '[:upper:]' '[:lower:]' | sed -e 's/s$//'`" grep -e "$FILENAME$" $hash | $check -c done # Check hash integrity for hash in $HASHES; do echo "Checking $hash.$SIGN..." gpg --verify $hash.$SIGN done