staging.inyokaproject.org

Script schließt sich nach ausführung

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Gamer001

Anmeldungsdatum:
6. März 2020

Beiträge: 3

Ich habe ein Script womit man SSDs sicher löschen kann jedoch schließt sich das Script immer nachdem ich die SSD ausgewählt habe

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
sudo lshw -class disk -short
printf "\033[1;31mWichtig dieses Programm ist nur für SSDs\033[0m\n"
 
echo "Welche Festplatte ist es : "
echo "1. sda"
echo "2. sda"
echo "3. sdc"
echo "4. sdd"
echo "5. sde"
echo "6. sdf"
echo "7. sdg"
printf "Bitte wählen und mit Enter bestätigen: "
read ch
 
date "+%x %X ging es los"

case $ch in
 1)res= sudo hdparm -I /dev/sda
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sda
 	sudo hdparm -I /dev/sda
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sda
 	sudo hdparm -I /dev/sda
 2)res= sudo hdparm -I /dev/sdb
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sdb
 	sudo hdparm -I /dev/sdb
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sdb
 	sudo hdparm -I /dev/sdb
 3)res=	sudo hdparm -I /dev/sdc
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sdc
 	sudo hdparm -I /dev/sdc
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sdc
 	sudo hdparm -I /dev/sdc
 4)res=	sudo hdparm -I /dev/sdd
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sdd
 	sudo hdparm -I /dev/sdd
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sdd
 	sudo hdparm -I /dev/sdd
 5)res=	sudo hdparm -I /dev/sde
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sde
 	sudo hdparm -I /dev/sde
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sde
 	sudo hdparm -I /dev/sde
 6)res= sudo hdparm -I /dev/sdf  
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sdf
 	sudo hdparm -I /dev/sdf
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sdf
 	sudo hdparm -I /dev/sdf
 7)res= sudo hdparm -I /dev/sdg
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sdg
 	sudo hdparm -I /dev/sdg
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sdg 
 	sudo hdparm -I /dev/sdg 
esac
 
 
date "+%x %X war es fertig"

start=$(date +%s); sleep 3; end=$(date +%s); echo "Das vernichten der Daten dauerte $((end - start))s"

printf "Und schon sind wir fertig"
read -p "[Enter]"

Bearbeitet von sebix:

Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!

paraplasma

Anmeldungsdatum:
7. August 2010

Beiträge: Zähle...

Hallo Gamer001!

Das wird dein Problem wahrscheinlich nicht lösen, aber in Zeile 6 solltest du

deinen Eintrag zu:

echo "2. sdb"

korrigieren.

wentz89

Anmeldungsdatum:
9. Januar 2020

Beiträge: 6

Hi,

die Beschreibung des Problems ist ein wenig ungenau.

Läuft das Programm bis Ende und schließt sich ohne auf die Entereingabe zu warten: Möglicherweise ist noch ein Enter ("\n") im stdin, was dazu führt dass der read-Befehl quasi übersprungen wird. Füge bitte ein zweites read -p hinter dem ersten ein und teste wie es sich verhält.

Wird der Code im switch-case nicht ausgeführt: Die Syntax des switch case sieht ein wenig komisch aus.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
case $ch in
 1)
        res=$(sudo hdparm -I /dev/sda)
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sda
 	sudo hdparm -I /dev/sda
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sda
 	sudo hdparm -I /dev/sda
        ;;
 2)
        res=$(sudo hdparm -I /dev/sdb)
 	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sdb
  	sudo hdparm -I /dev/sdb
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sdb
 	sudo hdparm -I /dev/sdb
        ;;
 3)
        res=$(sudo hdparm -I /dev/sdc)
 	...
        ;;
...
...
...
 7)
        res=$(sudo hdparm -I /dev/sdg)
   	sudo hdparm --user-master u --security-set-pass GEHEIM /dev/sdg
 	sudo hdparm -I /dev/sdg
 	sudo time hdparm --user-master u --security-erase GEHEIM /dev/sdg 
 	sudo hdparm -I /dev/sdg
        ;;
*)
        echo "Falsche Eingabe"
        ;;
esac

Wenn du deine Syntax so anpasst, sollte es funktionieren.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

wentz89 schrieb:

die Beschreibung des Problems ist ein wenig ungenau.

In dem Skript ist auch ganz viel überflüssige Redundanz. Und für die Auswahl könnte man auch select nutzen. Oder man lässt gleich den Devicenamen eingeben. Und die "Messung" am Ende des Skriptes misst nur die Dauer des sleep.

Also: ich brauche mehr Details! 😉

Eine Möglichkeit wäre, das Skript mit bash -x script auszuführen, um zu sehen, was da passiert.

fleet_street

Top-Wikiautor
Avatar von fleet_street

Anmeldungsdatum:
30. August 2016

Beiträge: 2400

Mit den hier gegebenen Hinweisen konnte ich das Skript so umbauen, dass es abgearbeitet wird. Woran hängt's Gamer001? Versehentlich das System gelöscht? *SCNR*

Das Skript baut wohl auf SSD/Secure-Erase auf. Die ganzen Wenns und Aber aus dem Artikel sind noch nicht integriert. Vermutlich soll res=$(sudo hdparm -I /dev/sda) auch dazu dienen den Zustand zu überprüfen. Damit würde ich doch anfangen, bevor es zur Sache geht. Potentiell gefährliche Dinge entschärfe ich für einen Test gerne, in dem ich das eigentliche Kommando durch ein vorangestelltes echo und in Anführungszeichen nur ausgeben lasse.

Antworten |