18.12.2014, 17:56 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
jokobau
Titel: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 26.08.2007, 12:30 Uhr



Anmeldung: 08. Jul 2006
Beiträge: 941
Wohnort: Stuttgart
#!/bin/bash
FLOPPY=0
GERAET=""

clear
if [ "$(id -u)" != "0" ]; then
echo "Fehler: Bitte als root anmelden um Platte oder Diskette platt zu machen !"
exit 1
fi


echo -e "Version August 07 (0.82)"
echo -e "\n\n#########################################################################################################"
echo -e "\n\t Dieses script dient zum sicheren löschen von Partitonen und ganzen Platten"
echo -e "\n\t\t ist auch für Disketten und Sticks sehr gut geeignet"
echo -e "\n\t Es kann Platten, Disketten und Sticks auf tiefer Ebene, unter den Dateisystemen löschen,"
echo -e "\n\t so dass wirklich die Daten physikalisch gelöscht sind"
echo -e "\n\t\t also das Magnetfeld der sogenannten Weißschen Bezirke gedreht wird"
# echo -e "\n\t dies gilt so absolut allerdings nur, \n\t wenn die ganze Platte und nicht nur die Partiton gelöscht wird"
echo -e "\n#########################################################################################################"
echo -e "\n\t Weiter mit Eingabe-Taste, oder Abruch mit einem Buchstaben anderen "
read WEITER
[ "$WEITER" != "" ] && exit 1

clear

while [ "$GERAET" = "" ] ; do
echo -e "\n\t folgende Platten und Partitonen sind vorhanden:"
fdisk -l
echo -e "\n\t Welche soll geschruppt werden ????"
echo -e "\t Die Eingabe erfordert die Bezeichnung des Gerätes, \n\t z. B. /dev/sdb (ganze Platte)"
echo -e "\t oder z.B. /dev/sdb1 für eine Partiton ##### Für Disketten genügt eine 1 ########### "
# echo -e "\t\t Disketten sind in aller Regel /dev/fd0"
read GERAET
clear
if [ "$GERAET" = "1" ]; then
FLOPPY=1
GERAET="/dev/fd0"
fi
if ! [ -w $GERAET ] ; then
echo -e "\a\n\t\t $GERAET ist kein Gerät zum löschen"
echo -e "\a\t\t Die Eingabe muss den Pfad beinhalten. z.B. /dev/hdb "
GERAET=""
fi
echo -e "\a\t\t Es muss eine Eingabe gemacht werden"
done

umount $GERAET
clear
if [ $FLOPPY = 1 ]; then
echo -e "\n\t Diskette in Gerät $GERAET wird sicher gelöscht \n\t\t Antworte mit Yes !! \a"
read ANTWORT
else
echo -e "########################################################################################"
echo -e "\t Wirklich alle Daten auf Platte/Partition $GERAET löschen"
echo -e "########################################################################################"
echo -e "\t Wenn eine Platte gelöscht wird, geht auch die Partitionstabelle hinüber "
echo -e "\t Es werden alle Sektoren bzw. Blöcke von $GERAET überschrieben \a\n"
echo -e "\n\t ist es wirklich die richtige Platte/Partiton ?? \n\t\t Es dreht sich um: \n\t\t\t$GERAET"
echo -e "\n\t\t Antworte mit Yes !! \a"
read ANTWORT
echo -e "\n\t ################ Platte platt machen !!!!! #######################"
echo -e "\t Beachte dass jeder Durchgang viel Zeit braucht. Rechne pro Durchgang und 10 GB mindestens eine halbe Stunde "
echo -e "\t\t mit Zufallszahl nochmal überschreiben das doppelte"
fi



if [ "$ANTWORT" != "Yes" ] ; then
clear
echo -e "\n\t Platte schruppen abgebrochen"
exit 1
fi

I=1


echo -e "\n\t Soll noch zur Sicherheit $GERAET mit Zufallzahlen überschrieben werden \n\t Eingabe bitte j/n "
JN=n
read JN

DURCHGANG=0
echo -e "\n\t\t Wie viele Durchgänge ????"

while [ "$DURCHGANG" = "" ] || [ 1 -gt $DURCHGANG ] ; do #
echo -e "\a\t\t Es muss eine Zahl größer null eingegeben werden."
if [ $FLOPPY = 1 ] ; then
echo -e "Eingabe eines Buchstabens führt zum einfachen formatieren der Diskette"
else
echo -e "Eingabe eines Buchstabens führt zum Abbruch"
fi
read DURCHGANG
done


MEHRFLOPPY="j"
if [ $FLOPPY = 1 ]; then
BS=16
else
BS=10240
fi
clear

while [ $MEHRFLOPPY = "j" ] ; do

for (( I=1; $I <= $DURCHGANG ; I++ )) ; do
clear
echo -e "\n\n\t\t Durchgang Nummer: $I von $DURCHGANG \n\t\t Das dauert lange !!! \n\t\t Abruch mit strg + c"
echo -e "\n\t $GERAET wird mit Nullen in Blöcken zu $BS kb überschrieben"
dd if=/dev/zero of=$GERAET bs=$BS conv=noerror
if [ $JN = j ] ; then
echo -e "\n\n\t $GERAET wird mit Zufallszahlen in Blöcken zu $BS kb überschrieben "
dd if=/dev/urandom of=$GERAET bs=$BS conv=noerror
fi
done

if [ $FLOPPY = 1 ]; then
echo -e "\n\t low-level formatieren. Richtet kein Dateisystem ein"
fdformat $GERAET
echo -e "\n\t\t Falls hier I/O - Errors gemeldet werden Diskette wegschmeißen" # Wäre sinnig das automatisch auszuwerten
echo -e "\n\t wenn nun mformat der mtools vorhanden ist, \n\t wird noch ein Dateisystem (vfat) erzeugt "
echo -e "Falls Fehlermeldung von bash muss Diskette noch (schnell)-formatiert werden"
mformat a: -l geprueft_und_sauber
echo -e "Prozess beendet mit $?"
echo -e "\n\t weitere Diskette gründlich löschen \n\t wenn ja Diskette wechseln und j eingeben"
read MEHRFLOPPY
[ $MEHRFLOPPY == "" ] && MEHRFLOPPY=n
fi
done


Zuletzt bearbeitet von jokobau am 28.08.2007, 23:52 Uhr, insgesamt ein Mal bearbeitet
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
dosenfleisch
Titel: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 26.08.2007, 16:48 Uhr



Anmeldung: 11. Jul 2006
Beiträge: 164
Wohnort: westerwald
Zitat:

# hier müßte noch rein eine Prüfung ob DURCHGANG eine Zahl ist, blicke ich aber nicht, wie es geht

Durchgang=0
if [ ! $Durchgang -gt 0 ] ; then echo -e "Zahl groesser Null bitte" ; fi
oder
Durchgang=1
if [ ! $Durchgang -ge 1 ] ; then echo -e "Zahl groesser Null bitte" ; fi
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
jokobau
Titel: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 26.08.2007, 19:37 Uhr



Anmeldung: 08. Jul 2006
Beiträge: 941
Wohnort: Stuttgart
Danke schön.
Könntest du mir noch bitte -gt und -ge erklären.

Vorwiegend habe ich keine Ahnung wie die Variablen Zuweisung passiert. Also, vor Jahrzehnten habe ich gelernt, dass es Strings gibt, logische, integere und nichtinterger Zahlen usw.
was passiert, wenn ich folgendes mache
i=1
i="1"
Zur Erklärung: Ich habe seinerzeit in einem Pascal ähnlichen dbase - Sprache bisle rumprogramiert und fliege was Linux - Scripte betrifft ziemlich tief.
Ich hätte damals schon in einem schön formatierten Eingabefeld die Eingabe ausgewertet und wenn das, wie im konkreten Fall, keine integere Zahl gewesen wäre mindesten 6 Pipser an den Systemlautsprecher geschickt.
schönen Abend noch.
Achim


Zuletzt bearbeitet von jokobau am 26.08.2007, 20:19 Uhr, insgesamt ein Mal bearbeitet
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
dosenfleisch
Titel: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 26.08.2007, 19:50 Uhr



Anmeldung: 11. Jul 2006
Beiträge: 164
Wohnort: westerwald
hallo jokobau,

ich bin seit einigen jahren autodidakt, erst in basic, windows bash und autohotkey-programmierung und nun in linux bash.
da ich das ganze nicht von grund auf gelernt habe, kann ich dir deine fragen nicht beantworten.

aber:
-gt heißt vermutlich greater than und
-ge heißt vermutlich greater than or equal

das ! zu beginn meint das gegenteil, also ein "nicht".
sehr gut ist "test", also die eckigen klammern und deren ausdrücke, in man bash erklärt.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
jokobau
Titel: Re: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 28.08.2007, 20:38 Uhr



Anmeldung: 08. Jul 2006
Beiträge: 941
Wohnort: Stuttgart
dosenfleisch hat folgendes geschrieben::
Zitat:

# hier müßte noch rein eine Prüfung ob DURCHGANG eine Zahl ist, blicke ich aber nicht, wie es geht

Durchgang=0
if [ ! $Durchgang -gt 0 ] ; then echo -e "Zahl groesser Null bitte" ; fi
oder
Durchgang=1
if [ ! $Durchgang -ge 1 ] ; then echo -e "Zahl groesser Null bitte" ; fi


So gehts nicht, wenn man nun was anderes wie eine Zahl eingibt, gibts als Antwort:

Zitat:

-su: [: a: integer expression expected



statt Verneinung habe ich folgendes gemacht:

while [ 1 -gt $DURCHGANG ] ; do
read DURCHGANG
echo -e "\a\t\t Es muss eine Zahl größer null eingegeben werden"
done

Wenn man ein Buchstaben eingibt gibt es eine Fehlermeldung und die Schleife ist abweisen.

Dank "Dosenfleisch" habe ich nun die Abfrage nach dem Laufwerk so gelöst:

[ -w $GERAET ]

aber auch hier wird, wenn GERAET ein leerer String ist, es als war ausgewertet! ?????

Zu bemerken ist noch, dass zum Floppy überschreiben wohl kleinere Blöcke besser sind, ich nehme da mal 16 k. Aber vielleicht kann da jemand was zu sagen.
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
Kano
Titel: Re: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 28.08.2007, 23:08 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16309

Hast schonmal den lächerlichen Speed von:

/sbin/hdparm -t /dev/urandom

getestet - ich denke nicht, aber mit dem Speed kannst bei großen Datenträgern einschlafen...
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
jgese
Titel: Re: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 28.08.2007, 23:32 Uhr



Anmeldung: 18. Jan 2004
Beiträge: 644

Das Thema gabs schon ein paar mal z.B. http://kanotix.com/index.php?name=PNphp ... p;p=136716

Einfach und schnell wäre demnach
Code:
cat /dev/zero > /dev/<whatever>

_________________
Bis die Tage
Achim
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
jokobau
Titel: Re: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 28.08.2007, 23:51 Uhr



Anmeldung: 08. Jul 2006
Beiträge: 941
Wohnort: Stuttgart
Kano hat folgendes geschrieben::
Hast schonmal den lächerlichen Speed von:

/sbin/hdparm -t /dev/urandom

getestet - ich denke nicht, aber mit dem Speed kannst bei großen Datenträgern einschlafen...


Schon, 10 GB 1 Stunde.
Verschiedene Leute gehen davon aus, dass dd das beste ist.

Ich hänge mal den aktuellen script oben rein und lösch den alten. Falls sich jemand wundert wegen der Diskussion.
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
dosenfleisch
Titel: Re: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 29.08.2007, 09:17 Uhr



Anmeldung: 11. Jul 2006
Beiträge: 164
Wohnort: westerwald
Zitat:

[ -w $GERAET ]
aber auch hier wird, wenn GERAET ein leerer String ist, es als war ausgewertet! ?????

if [ -z $GERAET ] ; then echo "Kein Geraet benannt" ; fi
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
dosenfleisch
Titel: Re: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 29.08.2007, 09:49 Uhr



Anmeldung: 11. Jul 2006
Beiträge: 164
Wohnort: westerwald
Zitat:

Wenn man ein Buchstaben eingibt gibt es eine Fehlermeldung und die Schleife ist abweisen.


ich wußte, es gibt da was, nun habe ich es in den tiefen des netzes gefunden:
Code:

while [ -z "$a" ]; do
echo -n "Geben Sie eine Zahl ein: "
read a
a=${a##*[^0-9,' ',-]*}
if [ -z "$a" ]; then
echo "Ungueltige Eingabe!"
fi
done
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Kano
Titel: Re: zum gründlichen löschen von Datenträgern  BeitragVerfasst am: 29.08.2007, 14:26 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16309

Also ich versteh den sinn vom script nicht ganz, es langt eigentlich völlig, wenn mans einmal überschreibt. Ob mans mit /dev/zero initalisiert oder mit Zufallsdaten ist eigentlich nur dann interessant, wenn man verschlüsseln will. Im Falle von Random noise fallen die beschriebenen stellen halt nicht so auf. Obs jetzt wirklich relevant ist darf jeder selbst entscheiden. Mehrere Durchgänge sind war für paranoide Leute, aber es wird wohl trotzdem keiner Schaffen, da mehr als zufällig verteilte Bits zu erraten, wenns nur einmal überschrieben wurde. Schliesslich ist es ja nicht so, dass nur einmal daten gespeichert werden, die sich dann "einbrennen" und beim löschen nur "halb" gelöscht werden. Nur wenn man sowas annehmen würde könnte man das wiederherstellen. Das ganze ist bei aktuellen Festplatten eh witzlos (aufgrund der extremen Datendichte), vielleicht könnte man irgendwas bei ner Diskette merken, aber selbst da würde ich das bezweifeln. Bei disketten kann man auch einfach gleich lowlevel format machen.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
horo
Titel:   BeitragVerfasst am: 29.08.2007, 16:44 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 700
Wohnort: Berlin
Hi,

kann mich Kano nur anschließen. Außerdem ist es (spätestens seit RLE - irgendwann in den 80er-Jahren) ja nicht mehr so, daß ein 0-bit als Nordpol und ein 1-bit als Südpol fortlaufend geschrieben wird*, die Firmware der Platte verschachtelt und kodiert auch eine Folge von Nullen zu einem magnetischen Rauschen, das wg. Komprimierung/Kodierung auch noch eine Vorgeschichte hat, die man kennen müsste. Das ganze kombiniert mit dem im typischen Betrieb vorkommenden mehrfachen Beschreiben einzelner Sektoren dürfte mit normalem Aufwand (Scheiben ausbauen und in spezieller Mechanik mit enger toleriertem Kopf und spezieller Elektronik lesen) nicht mehr zu knacken sein; vielleicht unter dem Mikroskop mit einer Datenrate von ein Bit pro Sekunde.

Ciao Martin

* ganz so einfach ist es nicht, auch MFM (Manchester) kodiert die Bits in Flankenwechsel / keine Flankenwechsel.

_________________
omnia vincit pecunia
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
jokobau
Titel:   BeitragVerfasst am: 29.08.2007, 23:14 Uhr



Anmeldung: 08. Jul 2006
Beiträge: 941
Wohnort: Stuttgart
Das ist recht interessant, was ihr da schreibt.
Ich hatte gelesen, dass man labormäßig ein so genanntes "bitshifting", darunter wird verstanden, dass sich die magnetisierten Teile im my - Bereich bewegegen auslesen könnte. Komme aber gerade von der Arbeit bin müde und will die Quellen nicht suchen. Kann aber in der Tat veraltet sein. In den nächsten Tagen mehr.
Mir kam es außerdem darauf an, mal einen script zu schreiben. Am praktischsten war er bislang beim stabelweisen löschen von Disketten.
@ Dosenfleisch
Das ist ja schon mal was und damit kann man das Problem lösen.
Dennoch verstehe ich die Handhabung der Variablen in bash überhaupt gar nicht.
Es gibt mindestens 3 Typen:
z.B. die Auswertung von [ ] ergibt eine logische, wobei Rückgabe 0 false ist und 1 true
i=1 wäre eine Ganzzahl
a="1" wäre ein String
d = date wird wohl als String übergeben und nicht als Typ datum
Es müsste dann doch irgenwie auch auszuwerten sein, ob die Variable eine Zahl oder ein String ist.

Kann mir mal jemand einen (Literatur) Typ geben wo ich mal ordentlich was nachlesen kann. Sollte aber in hochdeutsch sein.

Bislang benütze ich sowas:
http://linuxseiten.kg-it.de/index.php?index=themes_bash
oder sowas:
http://nafoku.de/t/unix.htm
das entspricht auch meinem jetzigen Nieveau, das ich aber gerne verlassen will.
n8
miteinander
Achim
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
horo
25 Titel: Advanced Bash-Scripting Guide  BeitragVerfasst am: 30.08.2007, 07:56 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 700
Wohnort: Berlin
Hi Achim,

mein Favorit in allen Lebenslagen, sozusagen das "ABS" für den Rechner: http://tldp.org/LDP/abs/html/

Ciao Martin

EDIT: Sorry, noch zu früh, habe das "hochdeutsch" überlesen...

_________________
omnia vincit pecunia
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
jokobau
Titel: Advanced Bash-Scripting Guide  BeitragVerfasst am: 30.08.2007, 08:30 Uhr



Anmeldung: 08. Jul 2006
Beiträge: 941
Wohnort: Stuttgart
Ist halt mein Problem, dass ich von all den Fremdsprachen bestenfalls hochdeutsch beherrsche. Englisch verstehe ich nur die Hälfte und das ist beim "programmieren" mit Abenteuer verbunden. Die schwäbische Sprache hat leider keine eigene Schrift, so dass auch die Literatur über bash recht rar ist.
Hab mir aber die Seiten trotzdem mal angeschaut. Auf den ersten Blick absolut brauchbar.
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
jokobau
Titel: Advanced Bash-Scripting Guide  BeitragVerfasst am: 30.08.2007, 08:49 Uhr



Anmeldung: 08. Jul 2006
Beiträge: 941
Wohnort: Stuttgart
und ich habe auch eine Antwort auf meine Frage gefunden:
Zitat:

4.3. Bash Variables Are Untyped

Unlike many other programming languages, Bash does not segregate its variables by "type". Essentially, Bash variables are character strings, but, depending on context, Bash permits integer operations and comparisons on variables. The determining factor is whether the value of a variable contains only digits.


Wenn ich das dann so richtig verdeutsche heißt das wohl, dass die Variablen prinzipiell Text-Strings sind und in der Laufzeit jeweils interpretiert werden.

Dies macht wiederum die Auswertung wie von "Dosenfleisch" vorgeschlagen zur einzig möglichen.
 
 Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden  
Antworten mit Zitat Nach oben
dosenfleisch
Titel:   BeitragVerfasst am: 30.08.2007, 11:06 Uhr



Anmeldung: 11. Jul 2006
Beiträge: 164
Wohnort: westerwald
jokobau hat folgendes geschrieben::

d = date wird wohl als String übergeben und nicht als Typ datum

so wird d mit datum gefüllt:
d=$(date +%M)
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
jgese
Titel:   BeitragVerfasst am: 30.08.2007, 12:33 Uhr



Anmeldung: 18. Jan 2004
Beiträge: 644

Hallo Achim,
ich kann dir zu deinem Link noch dieses Buch empfehlen

http://www.buecher-nach-isbn.info/3-826 ... 83-6.html.


_________________
Bis die Tage
Achim
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
gmx99
Titel:   BeitragVerfasst am: 03.11.2007, 18:20 Uhr



Anmeldung: 04. Sep 2006
Beiträge: 223

noch eine frage zu dd. mir persönlich passt das super, um einzelne partitionen oder gleich die ganze s-ata notebookplatte zu klonen. besseres backup gibt es keines.

wie kann ich sehen, wie weit der fortschritt des klonens ist? habe ich schon irgendwo hier mal gesehen, aber nicht mehr gefunden.

irgendwas mit bs=512 hinten dran?
danke
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.