Ich musste letztens eine größere Menge Festplatten ins Nirvana befördern hier meine zugegeben nicht perfekte aber deutlich arbeitserleichternde Methode… Wer sich über den Wust wundert, das sind gewachsene Strukturen 🙂
Ich kann mit diesem Skript im Grunde beliebig viele Festplatten parallel mit shred löschen und zum Abschluss noch die SMART Daten als .txt nach /var/www legen. Dabei fordert einen das Script dazu auf fertige Platten zu tauschen.
Wem es nützt der möge sich bedienen. Aber bitte mit verstand:
#!/bin/bash
#Platte nuken und smart auslesen mit hotswap
#bitte mit vorsicht verwenden dieses skript ist dafür gemacht daten zu vernichten!
#Seriennummer der Systemplatte (wird nicht angefasst) Alle anderen Schon!
SYSTEMDRIVE="PVF904ZFR3RTWN"
#Anzahl der zu startenden Jobs
JOBS=3
#SMAR Daten Zielverzeichnis
SMARTFOLDER=/var/www
#Tempverzeichnis anlegen
TEMPDIR=/tmp/hddclean
#TEMPDIR=$(mktemp -d)
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
mkdir -p $TEMPDIR
echo "Warning this script was designed to destroy data! (Hopefully the right)..."
read -p "Press any key to continue... "
nuke_instance()
{
jobnr=$1
while true; do
sleep $jobnr
for HOSTA in /sys/class/scsi_host/host?/scan; do
echo "- - -" > $HOSTA
done
for PLADDE in /dev/sd?; do
if [[ $(mkdir $TEMPDIR/$(basename $PLADDE) 2>&1) ]]; then
echo Job $jobnr: $PLADDE is locked...
sleep 1
else
echo Job $jobnr: Working on $PLADDE...
SERIAL=$(smartctl -a $PLADDE | grep "Serial Number" | tr -d " " | cut -d":" -f2)
sleep $jobnr
if [ $SERIAL ]; then
if [[ $(mkdir $TEMPDIR/$SERIAL 2>&1) ]]; then
echo Job $jobnr: $SERIAL is locked...
else
if [ $SERIAL == $SYSTEMDRIVE ]; then
echo Job $jobnr: $PLADDE is my system disk no way...
rm -rf $TEMPDIR/$SERIAL
else
if [ -e $SMARTFOLDER/$SERIAL.txt ];then
echo Job $jobnr: $PLADDE is already done... please replace disk $SERIAL!
echo 1 > /sys/block/$(basename $PLADDE)/device/delete && rm -rf $TEMPDIR/$SERIAL
else
echo Job $jobnr: $PLADDE with serial number $SERIAL will be nuked now...
shred $PLADDE -f -z -n1
smartctl -a $PLADDE > $SMARTFOLDER/$SERIAL.txt
echo 1 > /sys/block/$(basename $PLADDE)/device/delete && rm -rf $TEMPDIR/$SERIAL
fi
fi
fi
else
echo Job $jobnr: no disk to work on!
fi
rm -rf $TEMPDIR/$(basename $PLADDE)
fi
done
sleep 300
done
}
for inst in $(seq 1 $JOBS); do
nuke_instance $inst &
done
p.s. Ich bin nicht schuld wenn sich irgend jemand die falschen Daten weg schießt…