#!/bin/bash # ================================= # POST-INSTALL TOOLBOX # ================================= # Farben RED="\033[31m" GREEN="\033[32m" YELLOW="\033[33m" BLUE="\033[34m" CYAN="\033[36m" BOLD="\033[1m" RESET="\033[0m" # Einrückung vom linken Rand INDENT=" " # 3 Leerzeichen # Prüfen, ob Root if [ "$EUID" -ne 0 ]; then echo -e "${RED}${BOLD}${INDENT}Bitte als Root ausführen (sudo)${RESET}" exit 1 fi # Skripte (Name -> URL) declare -A SCRIPTS SCRIPTS["Get Host & SSD Serialnumbers"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/get_sn.sh" SCRIPTS["Setup Mail Notification"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/setup-email.sh" SCRIPTS["Set CPU Scaling Governor"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/scaling-governor.sh" SCRIPTS["Intel e1000e Offload Fix"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/nic-offloading-fix.sh" SCRIPTS["Set PVE Update Repos"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/set_pve_repos.sh" SCRIPTS["Set PBS Update Repos"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/set_pbs_repos.sh" SCRIPTS["Create PVE MGNT Bridge"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/create_pve-mgnt-vmbr.sh" SCRIPTS["Create PVE MGNT LXC"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/create_pve-mgnt-lxc.sh" SCRIPTS["Install pcvisit RemoteHost on Windows VMs"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/install-pcvisit-remotehost.sh" # Reihenfolge festlegen ORDER=( "Get Host & SSD Serialnumbers" "Setup Mail Notification" "Set CPU Scaling Governor" "Intel e1000e Offload Fix" "Set PVE Update Repos" "Set PBS Update Repos" "Create PVE MGNT Bridge" "Create PVE MGNT LXC" "Install pcvisit RemoteHost on Windows VMs" ) # Funktion für Header print_header() { clear echo -e "${CYAN}${BOLD}${INDENT}========================================${RESET}" echo -e "${CYAN}${BOLD}${INDENT} POST-INSTALL TOOLBOX v2.0 ${RESET}" echo -e "${CYAN}${BOLD}${INDENT}========================================${RESET}" echo } # Menü starten while true; do print_header echo -e "${YELLOW}${INDENT}Bitte wähle ein Script zum Ausführen:${RESET}\n" # Skripte nummerieren in der festen Reihenfolge i=1 declare -A INDEX_MAP for key in "${ORDER[@]}"; do echo -e "${INDENT}${RED}$i)${RESET} $key" INDEX_MAP[$i]="$key" ((i++)) done echo -e "${INDENT}${RED}0) Beenden${RESET}\n" echo -ne "${INDENT}Auswahl: " read -r choice # Beenden if [ "$choice" == "0" ]; then echo -e "${GREEN}${BOLD}${INDENT}Auf Wiedersehen! 👋${RESET}" exit 0 fi # Prüfen ob gültig if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -ge 1 ] && [ "$choice" -lt "$i" ]; then key="${INDEX_MAP[$choice]}" url="${SCRIPTS[$key]}" echo -e "\n${CYAN}${INDENT}----------------------------------------${RESET}" echo -e "${GREEN}${BOLD}${INDENT}Lade Script: $key${RESET}" echo -e "${YELLOW}${INDENT}Quelle: $url${RESET}" echo -e "${CYAN}${INDENT}----------------------------------------${RESET}\n" # Temporäre Datei tmpfile=$(mktemp) curl -sSL "$url" -o "$tmpfile" if [ ! -s "$tmpfile" ]; then echo -e "${RED}${BOLD}${INDENT}Fehler: Download fehlgeschlagen!${RESET}" rm -f "$tmpfile" read -r -p "${INDENT}Enter drücken für Menü..." continue fi # Script ausführen in Subshell mit SIGINT-Handler ( trap 'echo -e "\n${RED}${BOLD}${INDENT}⚠️ Unter-Script abgebrochen! Zurück zum Menü...${RESET}"; exit 1' SIGINT bash "$tmpfile" ) rm -f "$tmpfile" echo -e "\n${CYAN}${INDENT}----------------------------------------${RESET}" echo -e "${GREEN}${BOLD}${INDENT}✔ Script abgeschlossen!${RESET} Drücke Enter für Menü..." read -r else echo -e "${RED}${BOLD}${INDENT}Ungültige Auswahl! Bitte erneut versuchen.${RESET}" sleep 1 fi done