diff options
Diffstat (limited to 'debian-dl')
-rwxr-xr-x | debian-dl | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/debian-dl b/debian-dl new file mode 100755 index 0000000..3558085 --- /dev/null +++ b/debian-dl @@ -0,0 +1,87 @@ +#!/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 <image-url>" + 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 |