Update Ansible/requirement-check.sh
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user