it-praxisportal/courses/bash/05_kontrollfluss_und_testoperatoren/musterloesung.sh

84 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# ==============================================================================
# 🐧 BASH 05: MUSTERLÖSUNG
# ==============================================================================
analysiere_pfad_status() {
local pfad="$1"
if [[ ! -e "$pfad" ]]; then
echo "NOT_FOUND"
elif [[ -d "$pfad" ]]; then
echo "DIRECTORY"
elif [[ -f "$pfad" && -x "$pfad" ]]; then
echo "EXECUTABLE_FILE"
elif [[ -f "$pfad" ]]; then
echo "REGULAR_FILE"
else
echo "OTHER"
fi
}
validiere_ipv4_format() {
local ip="$1"
if [[ $ip =~ ^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$ ]]; then
local o1="${BASH_REMATCH[1]}"
local o2="${BASH_REMATCH[2]}"
local o3="${BASH_REMATCH[3]}"
local o4="${BASH_REMATCH[4]}"
if (( o1 <= 255 && o2 <= 255 && o3 <= 255 && o4 <= 255 )); then
return 0
fi
fi
return 1
}
bewerte_server_metrik() {
local cpu="$1"
local ram="$2"
if (( cpu >= 90 || ram >= 90 )); then
echo "CRITICAL"
elif (( cpu >= 75 || ram >= 75 )); then
echo "WARNING"
else
echo "OK"
fi
}
service_dispatcher() {
local aktion="$1"
local service_name="$2"
case "$aktion" in
start)
echo "Starte $service_name..."
;;
stop)
echo "Stoppe $service_name..."
;;
restart|reload)
echo "Starte $service_name neu..."
;;
status)
echo "Pruefe Status von $service_name..."
;;
*)
echo "Unbekannte Aktion: $aktion"
return 1
;;
esac
}
fuehre_sicher_aus() {
local befehl="$1"
eval "$befehl" >/dev/null 2>&1
local exit_code=$?
if [[ $exit_code -eq 0 ]]; then
echo "SUCCESS"
return 0
else
echo "ERROR_CODE: $exit_code"
return $exit_code
fi
}