diff --git a/install-pcvisit-remotehost.sh b/install-pcvisit-remotehost.sh index ff01f25..01234ad 100644 --- a/install-pcvisit-remotehost.sh +++ b/install-pcvisit-remotehost.sh @@ -5,57 +5,73 @@ # Enter = alle, oder Index-Zahlen wie 0 2 3 # ===================================================== +# ---- Farben / Layout ---- +BOLD="\033[1m" +GREEN="\033[32m" +YELLOW="\033[33m" +CYAN="\033[36m" +RED="\033[31m" +RESET="\033[0m" +INDENT=" " + PCVISIT_URL="https://gitea.vmd55888.de/manuel.maier/install-pcvisit-remotehost/raw/branch/main/install-pcvisit-remotehost.bat" -# ---- Alle Windows VMs abfragen ---- -echo "Lese alle Windows VMs aus..." -mapfile -t WINDOWS_VMS < <(qm list | awk 'NR>1 {print $1, $2}') - -if [ ${#WINDOWS_VMS[@]} -eq 0 ]; then - echo "Keine VMs gefunden." +# ---- Root Check ---- +if [[ $EUID -ne 0 ]]; then + echo -e "${RED}${BOLD}${INDENT}Bitte als Root ausführen!${RESET}" exit 1 fi -echo "Gefundene VMs:" +# ---- Alle Windows VMs abfragen ---- +echo -e "${CYAN}${BOLD}${INDENT}Lese alle Windows VMs aus...${RESET}" +mapfile -t WINDOWS_VMS < <(qm list | awk 'NR>1 {print $1, $2}') + +if [ ${#WINDOWS_VMS[@]} -eq 0 ]; then + echo -e "${YELLOW}${INDENT}Keine Windows VMs gefunden.${RESET}" + exit 1 +fi + +# ---- Gefundene VMs anzeigen ---- +echo -e "${CYAN}${BOLD}${INDENT}Gefundene Windows VMs:${RESET}" for i in "${!WINDOWS_VMS[@]}"; do - echo "[$i] ${WINDOWS_VMS[$i]}" + echo -e "${INDENT}[${YELLOW}$i${RESET}] ${WINDOWS_VMS[$i]}" done +# ---- Auswahl der VMs ---- echo -read -p "Welche VMs sollen installiert werden? (Enter = alle, z.B. 0 2 3): " CHOICE +read -p "${INDENT}Welche VMs sollen installiert werden? (Enter = alle, z.B. 0 2 3): " CHOICE -# ---- Ausgewählte VMs ermitteln ---- SELECTED=() if [[ -z "$CHOICE" ]]; then - # Enter gedrückt -> alle VMs SELECTED=("${WINDOWS_VMS[@]}") else - # Index-Zahlen for index in $CHOICE; do if [[ $index =~ ^[0-9]+$ ]] && [[ -n "${WINDOWS_VMS[$index]}" ]]; then SELECTED+=("${WINDOWS_VMS[$index]}") + else + echo -e "${RED}${INDENT}Ungültiger Index: $index${RESET}" fi done fi -# ---- Script auf jeder VM ausführen ---- +# ---- Installation auf ausgewählten VMs ---- for vm in "${SELECTED[@]}"; do VMID=$(echo $vm | awk '{print $1}') VMNAME=$(echo $vm | awk '{print $2}') - echo "----------------------------------------" - echo "Installiere PCVisit auf VMID $VMID ($VMNAME)..." - echo " -> Erstelle C:\\TMP..." - qm guest exec $VMID -- powershell -Command "mkdir C:\TMP" >/dev/null + echo -e "\n${CYAN}${BOLD}${INDENT}----------------------------------------${RESET}" + echo -e "${GREEN}${INDENT}Installiere PCVisit auf VMID $VMID ($VMNAME)...${RESET}" - echo " -> Lade Batch-Script herunter..." - qm guest exec $VMID -- powershell -Command "Invoke-WebRequest -Uri '$PCVISIT_URL' -OutFile 'C:\TMP\install-pcvisit-remotehost.bat'" >/dev/null + echo -e "${INDENT} -> Erstelle C:\\TMP..." + qm guest exec $VMID -- powershell -Command "mkdir C:\TMP" >/dev/null 2>&1 - echo " -> Starte Installation..." + echo -e "${INDENT} -> Lade Batch-Script herunter..." + qm guest exec $VMID -- powershell -Command "Invoke-WebRequest -Uri '$PCVISIT_URL' -OutFile 'C:\TMP\install-pcvisit-remotehost.bat'" >/dev/null 2>&1 + + echo -e "${INDENT} -> Starte Installation..." qm guest exec $VMID -- cmd /c "C:\TMP\install-pcvisit-remotehost.bat" - echo " -> Fertig!" + echo -e "${GREEN}${INDENT} -> Fertig mit VMID $VMID ($VMNAME)!${RESET}" done -echo -echo "✅ Installation auf allen ausgewählten VMs abgeschlossen!" +echo -e "\n${GREEN}${BOLD}${INDENT}✅ Installation auf allen ausgewählten VMs abgeschlossen!${RESET}"