Files
pve-pbs-setup/post_install.sh

118 lines
4.2 KiB
Bash

#!/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