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…