Update Ansible/requirement-check.sh

This commit is contained in:
2025-05-07 06:52:31 +00:00
parent 04d35bb597
commit e11a1b6b24

View File

@@ -10,8 +10,8 @@ NC='\033[0m' # No Color
# Prüfe, ob das Script mit Root-Rechten ausgeführt wird # Prüfe, ob das Script mit Root-Rechten ausgeführt wird
check_root() { check_root() {
if [ "$(id -u)" != "0" ]; then if [ "$(id -u)" != "0" ]; then
echo "${RED}Dieses Script benötigt Root-Rechte für Installationen.${NC}" printf "${RED}Dieses Script benötigt Root-Rechte für Installationen.${NC}\n"
echo "Bitte starte es erneut mit: sudo $0" printf "Bitte starte es erneut mit: sudo $0\n"
exit 1 exit 1
fi fi
} }
@@ -40,7 +40,7 @@ install_package() {
local pkg_manager=$1 local pkg_manager=$1
local pkg_name=$2 local pkg_name=$2
echo "${BLUE}Installiere $pkg_name...${NC}" printf "${BLUE}Installiere $pkg_name...${NC}\n"
case $pkg_manager in case $pkg_manager in
apt) apt)
@@ -59,28 +59,27 @@ install_package() {
apk add $pkg_name apk add $pkg_name
;; ;;
*) *)
echo "${RED}Unbekannter Paketmanager. Installation nicht möglich.${NC}" printf "${RED}Unbekannter Paketmanager. Installation nicht möglich.${NC}\n"
return 1 return 1
;; ;;
esac esac
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "${GREEN}$pkg_name erfolgreich installiert.${NC}" printf "${GREEN}$pkg_name erfolgreich installiert.${NC}\n"
return 0 return 0
else else
echo "${RED}Fehler bei der Installation von $pkg_name.${NC}" printf "${RED}Fehler bei der Installation von $pkg_name.${NC}\n"
return 1 return 1
fi fi
} }
# Hauptprogramm # Hauptprogramm
echo "${BLUE}=== Überprüfung der Systemvoraussetzungen ===${NC}" printf "${BLUE}=== Überprüfung der Systemvoraussetzungen ===${NC}\n\n"
echo
# Erkenne den Paketmanager # Erkenne den Paketmanager
PKG_MANAGER=$(detect_package_manager) PKG_MANAGER=$(detect_package_manager)
if [ "$PKG_MANAGER" = "unknown" ]; then if [ "$PKG_MANAGER" = "unknown" ]; then
echo "${RED}Konnte keinen bekannten Paketmanager erkennen.${NC}" printf "${RED}Konnte keinen bekannten Paketmanager erkennen.${NC}\n"
echo "Bitte installiere fehlende Pakete manuell." echo "Bitte installiere fehlende Pakete manuell."
need_manual_installation=true need_manual_installation=true
else else
@@ -93,21 +92,20 @@ missing_packages=""
missing_ssh=false missing_ssh=false
# 1. Prüfe bash # 1. Prüfe bash
echo -n "Prüfe bash... " printf "Prüfe bash... "
if command -v bash >/dev/null 2>&1; then if command -v bash >/dev/null 2>&1; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Nicht gefunden✗${NC}" printf "${RED}Nicht gefunden✗${NC}\n"
missing_packages="$missing_packages bash" missing_packages="$missing_packages bash"
fi fi
# 2. Prüfe python3 # 2. Prüfe python3
echo -n "Prüfe python3... " printf "Prüfe python3... "
if command -v python3 >/dev/null 2>&1; then if command -v python3 >/dev/null 2>&1; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Nicht gefunden✗${NC}" printf "${RED}Nicht gefunden✗${NC}\n"
# Paketname für verschiedene Distributionen anpassen
python_pkg="python3" python_pkg="python3"
if [ "$PKG_MANAGER" = "pacman" ]; then if [ "$PKG_MANAGER" = "pacman" ]; then
python_pkg="python" python_pkg="python"
@@ -116,20 +114,20 @@ else
fi fi
# 3. Prüfe sudo # 3. Prüfe sudo
echo -n "Prüfe sudo... " printf "Prüfe sudo... "
if command -v sudo >/dev/null 2>&1; then if command -v sudo >/dev/null 2>&1; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Nicht gefunden✗${NC}" printf "${RED}Nicht gefunden✗${NC}\n"
missing_packages="$missing_packages sudo" missing_packages="$missing_packages sudo"
fi fi
# 4. Prüfe openssh-server # 4. Prüfe openssh-server
echo -n "Prüfe openssh-server... " printf "Prüfe openssh-server... "
if systemctl status sshd >/dev/null 2>&1 || service ssh status >/dev/null 2>&1 || ps aux | grep -v grep | grep -q sshd; then if systemctl status sshd >/dev/null 2>&1 || service ssh status >/dev/null 2>&1 || ps aux | grep -v grep | grep -q sshd; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Nicht gefunden✗${NC}" printf "${RED}Nicht gefunden✗${NC}\n"
missing_ssh=true missing_ssh=true
ssh_pkg="openssh-server" ssh_pkg="openssh-server"
if [ "$PKG_MANAGER" = "pacman" ] || [ "$PKG_MANAGER" = "apk" ]; then if [ "$PKG_MANAGER" = "pacman" ] || [ "$PKG_MANAGER" = "apk" ]; then
@@ -141,26 +139,24 @@ fi
# Installation nur durchführen, wenn tatsächlich Pakete fehlen # Installation nur durchführen, wenn tatsächlich Pakete fehlen
if [ -n "$missing_packages" ] && [ "$need_manual_installation" = "false" ]; then if [ -n "$missing_packages" ] && [ "$need_manual_installation" = "false" ]; then
echo echo
echo "${BLUE}Die folgenden Pakete müssen installiert werden:${NC}" printf "${BLUE}Die folgenden Pakete müssen installiert werden:${NC}\n"
echo "$missing_packages" echo "$missing_packages"
echo echo
# Frage nach Bestätigung # Frage nach Bestätigung
echo -n "Möchtest du diese Pakete jetzt installieren? (j/N): " printf "Möchtest du diese Pakete jetzt installieren? (j/N): "
read -r answer read -r answer
if [ "$answer" = "j" ] || [ "$answer" = "J" ] || [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then if [ "$answer" = "j" ] || [ "$answer" = "J" ] || [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
# Check for root only if we need to install
check_root check_root
# Paketmanager aktualisieren printf "${BLUE}Aktualisiere Paketlisten...${NC}\n"
echo "${BLUE}Aktualisiere Paketlisten...${NC}"
case $PKG_MANAGER in case $PKG_MANAGER in
apt) apt)
apt update apt update
;; ;;
dnf|yum) dnf|yum)
$PKG_MANAGER check-update || true # Ignoriere Exit-Code $PKG_MANAGER check-update || true
;; ;;
pacman) pacman)
pacman -Sy pacman -Sy
@@ -174,66 +170,64 @@ if [ -n "$missing_packages" ] && [ "$need_manual_installation" = "false" ]; then
esac esac
echo echo
# Installiere alle fehlenden Pakete
for pkg in $missing_packages; do for pkg in $missing_packages; do
install_package "$PKG_MANAGER" "$pkg" install_package "$PKG_MANAGER" "$pkg"
done done
# SSH-Server starten falls nötig
if [ "$missing_ssh" = "true" ]; then if [ "$missing_ssh" = "true" ]; then
echo "${BLUE}Starte SSH-Server...${NC}" printf "${BLUE}Starte SSH-Server...${NC}\n"
if command -v systemctl >/dev/null 2>&1; then if command -v systemctl >/dev/null 2>&1; then
systemctl enable --now sshd || systemctl enable --now ssh systemctl enable --now sshd || systemctl enable --now ssh
elif command -v service >/dev/null 2>&1; then elif command -v service >/dev/null 2>&1; then
service ssh start || service sshd start service ssh start || service sshd start
else else
echo "${YELLOW}Konnte SSH-Server nicht automatisch starten.${NC}" printf "${YELLOW}Konnte SSH-Server nicht automatisch starten.${NC}\n"
echo "Bitte starte den SSH-Server manuell." echo "Bitte starte den SSH-Server manuell."
fi fi
fi fi
echo echo
echo "${BLUE}=== Abschließende Überprüfung ===${NC}" printf "${BLUE}=== Abschließende Überprüfung ===${NC}\n"
all_requirements_met=true all_requirements_met=true
echo -n "bash: " printf "bash: "
if command -v bash >/dev/null 2>&1; then if command -v bash >/dev/null 2>&1; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Fehlt trotz Installationsversuch!${NC}" printf "${RED}Fehlt trotz Installationsversuch!${NC}\n"
all_requirements_met=false all_requirements_met=false
fi fi
echo -n "python3: " printf "python3: "
if command -v python3 >/dev/null 2>&1; then if command -v python3 >/dev/null 2>&1; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Fehlt trotz Installationsversuch!${NC}" printf "${RED}Fehlt trotz Installationsversuch!${NC}\n"
all_requirements_met=false all_requirements_met=false
fi fi
echo -n "sudo: " printf "sudo: "
if command -v sudo >/dev/null 2>&1; then if command -v sudo >/dev/null 2>&1; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Fehlt trotz Installationsversuch!${NC}" printf "${RED}Fehlt trotz Installationsversuch!${NC}\n"
all_requirements_met=false all_requirements_met=false
fi fi
echo -n "openssh-server: " printf "openssh-server: "
if systemctl status sshd >/dev/null 2>&1 || service ssh status >/dev/null 2>&1 || ps aux | grep -v grep | grep -q sshd; then if systemctl status sshd >/dev/null 2>&1 || service ssh status >/dev/null 2>&1 || ps aux | grep -v grep | grep -q sshd; then
echo "${GREEN}Vorhanden✓${NC}" printf "${GREEN}Vorhanden✓${NC}\n"
else else
echo "${RED}Fehlt trotz Installationsversuch!${NC}" printf "${RED}Fehlt trotz Installationsversuch!${NC}\n"
all_requirements_met=false all_requirements_met=false
fi fi
echo echo
if $all_requirements_met; then if $all_requirements_met; then
echo "${GREEN}Alle Voraussetzungen sind erfüllt. System ist bereit!${NC}" printf "${GREEN}Alle Voraussetzungen sind erfüllt. System ist bereit!${NC}\n"
else else
echo "${RED}Nicht alle Voraussetzungen konnten installiert werden.${NC}" printf "${RED}Nicht alle Voraussetzungen konnten installiert werden.${NC}\n"
echo "Bitte installiere die fehlenden Pakete manuell." echo "Bitte installiere die fehlenden Pakete manuell."
exit 1 exit 1
fi fi
@@ -242,10 +236,10 @@ if [ -n "$missing_packages" ] && [ "$need_manual_installation" = "false" ]; then
fi fi
elif [ -z "$missing_packages" ]; then elif [ -z "$missing_packages" ]; then
echo echo
echo "${GREEN}Alle Voraussetzungen sind bereits erfüllt. Keine Installation notwendig.${NC}" printf "${GREEN}Alle Voraussetzungen sind bereits erfüllt. Keine Installation notwendig.${NC}\n"
else else
echo echo
echo "${YELLOW}Fehlende Pakete:${NC}" printf "${YELLOW}Fehlende Pakete:${NC}\n"
echo "$missing_packages" echo "$missing_packages"
echo "${YELLOW}Bitte installiere diese Pakete manuell mit deinem Paketmanager.${NC}" printf "${YELLOW}Bitte installiere diese Pakete manuell mit deinem Paketmanager.${NC}\n"
fi fi