ich habe eine Funktion für den Zustand von Laufwerken geschrieben.
Es soll verschieden Zustände zurück melden und es funktioniert.
Jedoch kommt es mir so extrem if verschachtelt vor, sdoaß ich es noch vereinfachen möchte und bitte um ein Feedback..
Code: Alles auswählen
## Funktion die angeschlossen Platten auf Vorhandensein und Verschlüsselung prüft
#
# Ist die externe Platte verschlüsselt und ist eingebunden?
function check_status()
{
# Setzt den wert auf das Device.
# 5 Zustände + Error
# -- nodevice wenn das Laufwerk mit dem Label nicht gefunden wurde
# -- true = Laufwerk vorhanden
# -- plain = LW unverschlüsselt
# -- encrypt = LW verschlüsselt und geschlossen
# -- decrypt = LW entschlüsselt, nicht eingebunden
# -- ready " LW eingebunden und bereit für die Verwendung
[ "$source_debug" = "true" ] && echo -e "\n\nAufgerufene Funktion ${FUNCNAME[0]}";
drive_label="$1"
drive_mount="$2"
local drive_tmp=$(lsblk -ln -po name,label,mountpoint | grep $drive_label)
if [[ "$drive_tmp" == *"$drive_label"* ]]; then
if [[ "$drive_tmp" == *"$drive_mount"* ]]; then
if [[ $drive_tmp == *"/dev/mapper/"* ]]; then
drive_status="ready"
elif [[ $drive_tmp == "/dev/sd"* ]]; then
drive_status="ready"
else
drive_status="error"
echo -e "Fehler aufgetreten! Unbekanntes Gerät. Abbruch!"
exit
fi
else
if [[ $drive_tmp == *"/dev/mapper/"* ]]; then
drive_status="decrypt"
elif [[ $drive_tmp == "/dev/sd"* ]]; then
local drive_tmp=($(lsblk -r -po name,label | grep $drive_label))
[[ $(cryptsetup isLuks $drive_tmp) -eq 0 ]] && drive_status="encrypt" || drive_status="plain"
else
drive_status="error"
echo -e "Fehler aufgetreten! Unbekanntes Gerät. Abbruch!"
exit
fi
fi
else
drive_status="nodevice"
fi
}