Monatsarchive: Mai 2013

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:

<br />
#!/bin/bash<br />
#Platte nuken und smart auslesen mit hotswap<br />
#bitte mit vorsicht verwenden dieses skript ist dafür gemacht daten zu vernichten!</p>
<p>#Seriennummer der Systemplatte (wird nicht angefasst) Alle anderen Schon!<br />
SYSTEMDRIVE=&quot;PVF904ZFR3RTWN&quot;<br />
#Anzahl der zu startenden Jobs<br />
JOBS=3<br />
#SMAR Daten Zielverzeichnis<br />
SMARTFOLDER=/var/www<br />
#Tempverzeichnis anlegen<br />
TEMPDIR=/tmp/hddclean<br />
#TEMPDIR=$(mktemp -d)</p>
<p>if [[ $EUID -ne 0 ]]; then<br />
   echo &quot;This script must be run as root&quot; 1&gt;&amp;2<br />
   exit 1<br />
fi</p>
<p>mkdir -p $TEMPDIR<br />
echo &quot;Warning this script was designed to destroy data! (Hopefully the right)...&quot;<br />
read -p &quot;Press any key to continue... &quot;</p>
<p>nuke_instance()<br />
{<br />
 jobnr=$1<br />
 while true; do<br />
  sleep $jobnr<br />
  for HOSTA in /sys/class/scsi_host/host?/scan; do<br />
   echo &quot;- - -&quot; &gt; $HOSTA<br />
  done</p>
<p>  for PLADDE in /dev/sd?; do<br />
   if [[ $(mkdir $TEMPDIR/$(basename $PLADDE) 2&gt;&amp;1) ]]; then<br />
    echo Job $jobnr: $PLADDE is locked...<br />
    sleep 1<br />
   else<br />
    echo Job $jobnr: Working on $PLADDE...<br />
    SERIAL=$(smartctl -a $PLADDE | grep &quot;Serial Number&quot; | tr -d &quot; &quot; | cut -d&quot;:&quot; -f2)<br />
    sleep $jobnr<br />
    if [ $SERIAL ]; then<br />
     if [[ $(mkdir $TEMPDIR/$SERIAL 2&gt;&amp;1) ]]; then<br />
      echo Job $jobnr: $SERIAL is locked...<br />
     else<br />
      if [ $SERIAL == $SYSTEMDRIVE ]; then<br />
       echo Job $jobnr: $PLADDE is my system disk no way...<br />
       rm -rf $TEMPDIR/$SERIAL<br />
      else<br />
       if [ -e $SMARTFOLDER/$SERIAL.txt ];then<br />
        echo Job $jobnr: $PLADDE is already done... please replace disk $SERIAL!<br />
        echo 1 &gt; /sys/block/$(basename $PLADDE)/device/delete &amp;&amp; rm -rf $TEMPDIR/$SERIAL<br />
       else<br />
        echo Job $jobnr: $PLADDE with serial number $SERIAL will be nuked now...<br />
        shred $PLADDE -f -z -n1<br />
        smartctl -a $PLADDE &gt; $SMARTFOLDER/$SERIAL.txt<br />
        echo 1 &gt; /sys/block/$(basename $PLADDE)/device/delete &amp;&amp; rm -rf $TEMPDIR/$SERIAL<br />
       fi<br />
      fi<br />
     fi<br />
    else<br />
     echo Job $jobnr: no disk to work on!<br />
    fi<br />
    rm -rf $TEMPDIR/$(basename $PLADDE)<br />
   fi<br />
  done<br />
  sleep 300<br />
 done<br />
}</p>
<p>for inst in $(seq 1 $JOBS); do<br />
 nuke_instance $inst &amp;<br />
done<br />

p.s. Ich bin nicht schuld wenn sich irgend jemand die falschen Daten weg schießt…



Top