Naubaddi
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 744
|
Hi user_unknown, user_unknown schrieb: ...Entkoppeln?... ...beenden_ok="" # Beenden löschen...
...dumm.hf.txt...
habe mir Deine Infos durch den Kopf gehen lassen und die oben angeführten Dinge verbessert, den Rest Deiner Infos habe ich nicht verstanden weil hier sitzt Jemand der sich den Computerkram selber beigebracht hat aus Spaß an der Freud und damit das Ding Aufgaben erledigt. Wie ist Deine Meinung zu dem überarbeiteten Skript? Das überarbeitete Skript: 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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 | #!/bin/bash
#
# --- Infos ----------------------------------------------------------------------------------------------------
#
# Scriptname entkoppeln.sh
# Funktion einen Datenträger ohne Datenverlust entfernen.
#
# benötigt bash, udisksctl
#
# Status noch in Arbeit ( wer wird schon fertig??? )
# Fehler keine, oder??? ( Naubadi is pörfekt )
#
# Start 09.05.2019
# Stand 27.08.2019
#
# --- Variablen (den Inhalt der Variablen bei Bedarf ändern) ---------------------------------------------------
#
extern="/media/$USER/" # Pfad zu externen Datenträgern
linieX="-" # Zeichen für eine Linie
eingabe="" # eine Variable für die Eingabe
beenden="q" # mit dieser Taste wird das Skript beendet
#
# --- Funktion für eine Linie ----------------------------------------------------------------------------------
#
function linie_erstellen {
anzahl=0
linie=""
while [ "$1" != "$anzahl" ] ; do
linie="$linie$linieX"
((anzahl+=1))
done
}
#
# --- Datenträger suchen und anzeigen --------------------------------------------------------------------------
#
eingabe=""
while [ "$eingabe" = "" ] ; do
clear
nr="0"
nr_max=""
medium=()
find "$extern" -maxdepth 1 -type d > "$HOME/gefundene.medien"
linie_erstellen "79" ; echo "$linie"
while read -r line ; do
if [ "${line##*$extern}" ] ; then
((nr+=1))
nr_max="$nr_max $nr"
medium["$nr"]="${line##*$extern}"
echo "$nr) ${medium[$nr]}"
fi
done < "$HOME/gefundene.medien"
rm "$HOME/gefundene.medien"
if [ "$nr" != 0 ] ; then
echo ""
echo "q) keinen Datenträger entfernen und das Programm beenden"
fi
#
# --- Datenträger auswählen ----------------------------------------------------------------------------------
#
eingabe=""
speichermedium=""
if [ "$nr" != "0" ] ; then
echo
echo -n "Welcher Datenträger$nr_max soll entfernt werden oder q? "
while [ "$eingabe" = "" ] ; do
read -r -t 1 -s -n 1 -p "" eingabe
echo -n "$eingabe"
done
if [ "$eingabe" = "q" ] ; then
speichermedium=""
exit
else
speichermedium="${medium[$eingabe]}"
fi
echo ""
linie_erstellen "79" ; echo "$linie"
fi
#
# --- Datenträger entkoppeln ---------------------------------------------------------------------------------
#
if [ "$speichermedium" ] ; then
echo "Der Puffer wird mit 'sync' gespeichert."
sync
echo -n "Der Datenträger wird mit 'unmount' ausgehangen "
usbpfad=$(lsblk -l | grep "$speichermedium")
usbname="${usbpfad:0:4}"
udisksctl unmount -b "/dev/$usbname"
echo "Der Datenträger wird mit 'power-off' entkoppelt."
udisksctl power-off -b "/dev/$usbname"
echo
echo "Fertig, der Datenträger kann entfernt werden!"
linie_erstellen "79" ; echo "$linie"
else
if [ "$eingabe" != "0" ] ; then
echo "Es wurde kein Datenträger in '$extern' gefunden!"
linie_erstellen "79" ; echo "$linie"
fi
fi
#
# --- weiter machen oder beenden? ----------------------------------------------------------------------------
#
eingabe=""
echo
echo -n "Weiter machen mit 'w' beenden mit '$beenden': "
#
while [ "$eingabe" != "w" ] && [ "$eingabe" != "q" ]; do
read -r -t 1 -s -n 1 -p "" eingabe
done
echo
#
if [ "$eingabe" = $beenden ] ; then
exit
fi
#
eingabe=""
done
#
# --- Skript Ende ----------------------------------------------------------------------------------------------
#
|
Grüßle, Naubaddi
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Tut mir leid, aber diese Woche habe ich zu wenig Zeit.
|
Naubaddi
(Themenstarter)
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 744
|
Hi, user_unknown schrieb: Tut mir leid, aber diese Woche habe ich zu wenig Zeit.
macht nix, dann kann ich ja noch etwas über Deine Anregungen nachdenken. Das mit den Funktionen wurde so weit ich es verstanden habe auch umgesetzt, es ist schön wenn Jemand ein wenig Zeit opfert und einem unter die Arme greift. So sollte es noch übersichtlicher und besser lesbar sein:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 | #!/bin/bash
#
# --- Infos ----------------------------------------------------------------------------------------------------
#
# Scriptname entkoppeln.sh
# Funktion einen Datenträger ohne Datenverlust entfernen.
#
# benötigt bash, udisksctl
#
# Status noch in Arbeit ( wer wird schon fertig??? )
# Fehler keine, oder??? ( Naubadi is pörfekt )
#
# Start 09.05.2019
# Stand 28.08.2019
#
# --- Variablen (den Inhalt der Variablen bei Bedarf ändern) ---------------------------------------------------
#
extern="/media/$USER/" # Pfad zu externen Datenträgern
linieX="-" # Zeichen für eine Linie
eingabe="" # eine Variable für die Eingabe
weiter="w" # mit dieser Taste weiter machen
beenden="q" # mit dieser Taste das Skript beenden
#
# --- Funktionen -----------------------------------------------------------------------------------------------
#
function linie_erstellen {
anzahl=0
linie=""
while [ "$1" != "$anzahl" ] ; do
linie="$linie$linieX"
((anzahl+=1))
done
}
#
function speichermedium_auswahl {
eingabe=""
speichermedium=""
if [ "$nr" != "0" ] ; then
echo
echo -n "Welcher Datenträger$nr_max soll entfernt werden oder $beenden für beenden? "
while [ "$eingabe" = "" ] ; do
read -r -t 1 -s -n 1 -p "" eingabe
echo -n "$eingabe"
done
if [ "$eingabe" = "$beenden" ] ; then
exit
else
speichermedium="${medium[$eingabe]}"
fi
echo ""
linie_erstellen "79" ; echo "$linie"
fi
}
#
function speichermedium_entkoppeln {
if [ "$speichermedium" ] ; then
echo "Der Puffer wird mit 'sync' gespeichert."
sync
echo -n "Der Datenträger wird mit 'unmount' ausgehangen "
usbpfad=$(lsblk -l | grep "$speichermedium")
usbname="${usbpfad:0:4}"
udisksctl unmount -b "/dev/$usbname"
echo "Der Datenträger wird mit 'power-off' entkoppelt."
udisksctl power-off -b "/dev/$usbname"
echo
echo "Fertig, der Datenträger kann entfernt werden!"
linie_erstellen "79" ; echo "$linie"
else
if [ "$eingabe" != "0" ] ; then
echo "Es wurde kein Datenträger in '$extern' gefunden!"
linie_erstellen "79" ; echo "$linie"
fi
fi
}
#
function weiter_oder_beenden {
eingabe=""
echo
echo -n "Weiter machen mit '$weiter' beenden mit '$beenden': "
#
while [ "$eingabe" != "$weiter" ] && [ "$eingabe" != "$beenden" ]; do
read -r -t 1 -s -n 1 -p "" eingabe
done
echo
#
if [ "$eingabe" = $weiter ] ; then eingabe="" ; fi
if [ "$eingabe" = $beenden ] ; then exit ; fi
}
#
# --- Datenträger suchen und anzeigen --------------------------------------------------------------------------
#
while [ "$eingabe" = "" ] ; do
clear
nr="0"
nr_max=""
medium=()
find "$extern" -maxdepth 1 -type d > "$HOME/gefundene.medien"
linie_erstellen "79" ; echo "$linie"
while read -r line ; do
if [ "${line##*$extern}" ] ; then
((nr+=1))
nr_max="$nr_max $nr"
medium["$nr"]="${line##*$extern}"
echo "$nr) ${medium[$nr]}"
fi
done < "$HOME/gefundene.medien"
rm "$HOME/gefundene.medien"
if [ "$nr" != 0 ] ; then
echo ""
echo "$beenden) keinen Datenträger entfernen und das Programm beenden"
fi
#
speichermedium_auswahl
speichermedium_entkoppeln
weiter_oder_beenden
#
done
#
# --- Skript Ende ----------------------------------------------------------------------------------------------
#
|
Grüßle, Naubaddi
|