#!/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=" " # 6 Leerzeichen # Prüfen, ob Root if [ "$EUID" -ne 0 ]; then echo -e "${RED}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 ${RESET}" echo -e "${CYAN}${BOLD}${INDENT}====================================${RESET}" } # Menü starten while true; do print_header echo -e "\n${YELLOW}${INDENT}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}${INDENT}Bye! 👋${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}${INDENT}Lade Script: ${BOLD}$key${RESET}" echo -e "${YELLOW}${INDENT}Von: $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}${INDENT}Fehler beim Download!${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${YELLOW}${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}${INDENT}Fertig!${RESET} Drücke Enter für Menü..." read -r else echo -e "${RED}${INDENT}Ungültige Auswahl! Bitte erneut versuchen.${RESET}" sleep 1 fi done