Files
pve-pbs-setup/post_install.sh

115 lines
4.0 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=" " # 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
# --------------------------------------
# Strg+C im Unter-Script abfangen, Master-Script bleibt aktiv
( trap '' 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