#!/bin/sh # Löscht ein komplettes Device # Version 0.2.0 # Vom 2012-10-15 Aktualisert am 2021-01-24 # (c) LUG-VS (GPL) ##Status anzeigen: #sudo kill -SIGUSR1 $(pidof dd) # teste ob vorhanden if [ "`whoami`" != "root" ] ; then echo 'Nicht ausreichend Rechte - bitte als "root" anmelden!' exit 10 fi # Überprüft ob Parameter vorhanden if [ $# -lt 1 ] ; then echo 'Device angeben z.B. "'$0' /dev/sdf"' exit 20 fi # teste ob vorhanden if [ ! -b $1 ] ; then echo 'Device existiert nicht' echo 'Device angeben z.B. "'$0' /dev/sdf"' exit 30 fi # Device zuweisen OF=$1 SIZE=$(fdisk -l ${OF} 2> /dev/null | grep ${OF} | sed -r "s/.*\, (.*) byte.*/\1/I") NAME=$(fdisk -l ${OF} 2> /dev/null | head -n2 | tail -n1 | sed 's/.*: *//' | sed 's/ *//') RNDOM=$(( 20 * 1024 * 1024 )) # Durchsatz bei Zufallszahlen in B/s NULLS=$(( 40 * 1024 * 1024 )) # Durchsatz bei Zufallszahlen in B/s RDURATION=$(( ${SIZE} / ${RNDOM} )) NDURATION=$(( ${SIZE} / ${NULLS} )) DURATION=$(( ${RDURATION} + ${NDURATION} )) #echo "Random=<${RNDOM}> NULLS=<${NULLS}> RDURATION=<${RDURATION}> NDURATION=<${NDURATION}> DURATION=<${DURATION}>" # Letze Nachfrage echo -e "Info ($(date '+%A, %T Uhr')): $OF hat eine Größe von $((${SIZE}/1073741824))GB! Damit dauert mit anschließenden schreiben von Nullen bei typischen Durchsatz etwa $((${DURATION}/3600)) Stunden!" echo -en "*** Achtung! Device (Festplatte) ${OF} (${NAME}) wirklich löschen? (j/n) " read -n 1 key echo -e "\n" if [ "${key}" != "j" ] ; then echo 'Antwort nicht "j" => abgebrochen durch Benutzer'; exit 1; fi; # Laufwerk aushängen echo -en "Info ($(date '+%A, %T Uhr')): Laufwerk aushängen: " umount -f ${OF}* # Zufallszahlen Schreiben bis TIME=$(date "+%A, %T Uhr") RTIME=$(date "+%A um %H:%M Uhr" --date="+${RDURATION} seconds") FTIME=$(date "+%A um %H:%M Uhr" --date="+${DURATION} seconds") echo -e "Info (${TIME}): $OF hat eine Größe von $((${SIZE}/1073741824))GB, was bei typischen Durchsatz von $((${RNDOM}/1048576))MB/s etwa bis ${RTIME} für das schreiben der Zufallszahlen dauert!" echo -e "Info (${TIME}): Damit dauert mit anschließenden schreiben von Nullen bei typischen Durchsatz von $((${NULLS}/1048576))MB/s etwa bis ${FTIME}!" ##dd random dd if=/dev/urandom of=${OF} bs=4M iflag=fullblock oflag=direct status=progress sync #echo -e "\n" TIME=$(date "+%A, %T Uhr") NTIME=$(date "+%A um %H:%M Uhr" --date="+${NDURATION} seconds") echo -e "Info (${TIME}): $OF hat eine Größe von ${SIZE} bytes, was bei typischen Durchsatz von $((${NULLS}/1048576))MB/s etwa bis ${NTIME} für das schreiben der Nullen dauert!" ##dd null #dd if=/dev/zero of=${OF} bs=64k dd if=/dev/zero of=${OF} bs=4M iflag=fullblock oflag=direct status=progress sync TIME=$(date "+%A, %T Uhr") echo -e "Info (${TIME}): $OF (${NAME}) sicher gelöscht!" ## Bisher # echo 'Laufwerk aushängen' # umount -f ${OF}* # # Zufallszahlen beschreiben und anschließend löschen # date +"%F %T" # echo 'Schreibe Zufallszahlen auf' ${OF} # dd if=/dev/urandom of=${OF} # dd if=/dev/urandom of=${OF} bs=4M iflag=fullblock oflag=direct status=progress # sync # echo -en "\n" # date +"%F %T" # echo 'Schreibe Nullen auf' ${OF} # dd if=/dev/zero of=${OF} bs=64k # dd if=/dev/zero of=${OF} bs=4M iflag=fullblock oflag=direct status=progress # sync # date +"%F %T" # echo 'Device (Festplatte)' ${OF} 'sicher gelöscht' # OF= # # 4 mal lüten #for (( INDEX=4 ; ${INDEX} ; INDEX=$(( ${INDEX} - 1 )) )) ; do # beep # => beep wird nicht gefunden ist auch kein alias ???!!! # wait #done #INDEX= ##