Weryfikacja poprawności nagranych płyt CD

No votes yet
#!/bin/bash

VOL='vols/'

INFO='\033[1;33;40mINFO \033[0m:'
OKAY='\033[1;32;40mOK   \033[0m:'
WARN='\033[0;33;40mUWAGA\033[0m:'
ERRO='\033[1;31;40mBŁĄD \033[0m:'

if [ "$1" != "quick" ]
then
        echo -e "$INFO Generuję brakujące sumy kontrolne"
        for iso in *.iso
        do
                ID=`isoinfo -d -i "$iso" | md5sum | cut -d" " -f1`
                DAT="${VOL}${ID}.dat"
                if [ ! -f "$DAT" ]
                then
                        LEN=$(( `wc -c "$iso" | cut -d" " -f1` / 2048 ))
                        MD5=`md5sum "$iso" | cut -d" " -f1`
                        echo -e "$INFO Generuję brakujący rekord dla obrazu \"$iso\""
                        echo "$MD5 $LEN $iso" > "$DAT"
                fi
        done
fi

echo -e "$INFO Generuję identyfikator płyty w napędzie"
ID=`isoinfo -d -i /dev/cdrom | md5sum | cut -d" " -f1`
VID="${VOL}${ID}.dat"
if [ -f "$VID" ]
then
        LEN=`cut -d" " -f2 ${VOL}${ID}.dat`
        ISOCS=`cut -d" " -f1 ${VOL}${ID}.dat`
        ISO=`cut -d" " -f3- ${VOL}${ID}.dat`
        echo -e "$INFO Napęd zawierta płytę \"$ISO\". Liczę sumę kontrolną."
        CDROMCS=`dd if=/dev/cdrom bs=2048 count=$LEN 2>/dev/null | md5sum | cut -d" " -f1`
        if [ "$CDROMCS" == "$ISOCS" ]
        then
                echo -e "$OKAY Nośnik ma poprawną sumę kontrolną."
                exit 0
        else
                echo -e "$ERRO Nośnik ma niepoprawną sumę kontrolną."
                exit 255
        fi
else
        echo -e "$WARN Nośnika nie ma w bazie. Nie mogę sprawdzić poprawności."
        exit 1
fi