99 lines
3.4 KiB
Bash
99 lines
3.4 KiB
Bash
|
#!/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=
|
||
|
|
||
|
##
|