Festplatten Löschen

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…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.