From 572a78597cfa978cc1804fcf09489df827dd3a5b Mon Sep 17 00:00:00 2001 From: braniz Date: Mon, 19 Aug 2024 18:57:28 +0200 Subject: [PATCH] Auswahl des OS wurde Angepasst. Automatische Sortierung wurde hinzugefuegt --- vbox_create.sh | 67 +++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 33 deletions(-) mode change 100755 => 100644 vbox_create.sh diff --git a/vbox_create.sh b/vbox_create.sh old mode 100755 new mode 100644 index 288d09d..f58c57b --- a/vbox_create.sh +++ b/vbox_create.sh @@ -1,7 +1,7 @@ #!/bin/bash # Autor: Branislav Zeljak v0.8 -# Beschreibung: Dieses Skript erstellt VirtualBox-VMs und klonet Festplatten parallel. +# Beschreibung: Dieses Skript erstellt VirtualBox-VMs und klont Festplatten parallel. # Verwendung: Führen Sie das Skript aus und befolgen Sie die Eingabeaufforderungen. clear @@ -57,7 +57,7 @@ find_iso_file() { # %--------------------end/Funktionen--------------------% echo "User / Passwort: user00/Start1234" -echo "Welches VDI-OS soll installiert werden" +echo "Welches VDI-OS soll installiert werden?" echo echo "Für wen soll es sein?" @@ -101,8 +101,6 @@ done # Variable für das Verzeichnis VAR_VB="/storage/vbox_storage" -clear - # Verzeichnis mit ISO-Dateien ISO_DIR="/srv/data/ISO/" @@ -111,13 +109,14 @@ echo COLUMNS=10 PS3="Bitte Ihre Auswahl eingeben: " -declare -A OS_MAP -OS_MAP=( +# Betriebssysteme und ISO-Dateimuster +declare -A WieOS_MAP=( ["Ubuntu LTS SRV"]="Ubuntu_64 ubuntu-*-live-server-amd64.iso" ["Ubuntu LTS GUI"]="Ubuntu_64 ubuntu-*-desktop-amd64.iso" ["Debian"]="Debian_64 debian-*.iso" ["RHEL"]="RedHat_64 rhel-*.iso" - ["Fedora"]="Fedora_64 Fedora-*.iso" + ["Fedora-Workstation"]="Fedora_64 Fedora-Workstation*.iso" + ["Fedora-Server"]="Fedora_64 Fedora-Server*.iso" ["kali-linux"]="Linux_64 kali-linux-*.iso" ["linuxmint"]="Linux_64 linuxmint-*.iso" ["openSUSE"]="OpenSUSE_64 openSUSE-*.iso" @@ -125,33 +124,34 @@ OS_MAP=( ["Quit"]="Quit" ) -select opt in "${!OS_MAP[@]}" +# Alphabetisch sortieren, mit Quit am Ende +sorted_keys=($(for key in "${!WieOS_MAP[@]}"; do echo "$key"; done | sort | grep -v "Quit")) +sorted_keys+=("Quit") + +# Auswahlmenü für die Betriebssysteme anzeigen +select opt in "${sorted_keys[@]}" do - case $opt in - "Quit") - exit - ;; - *) - VAR_OS="${OS_MAP[$opt]%% *}" # Extrahiere den ersten Teil (Betriebssystem) - VAR_ISO_PATTERN="${OS_MAP[$opt]#* }" # Extrahiere den zweiten Teil (ISO-Muster) - - # Finden Sie den tatsächlichen Dateinamen der ISO-Datei - VAR_ISO=$(find_iso_file "$VAR_ISO_PATTERN") - - # Überprüfen Sie, ob die Datei gefunden wurde - if [ -z "$VAR_ISO" ]; then - echo "Die ISO-Datei mit dem Muster '$VAR_ISO_PATTERN' wurde nicht gefunden." - exit 1 - fi - ;; - esac - + if [ "$opt" == "Quit" ]; then + exit + fi + + VAR_OS="${WieOS_MAP[$opt]%% *}" # Extrahiere den ersten Teil (Betriebssystem) + VAR_ISO_PATTERN="${WieOS_MAP[$opt]#* }" # Extrahiere den zweiten Teil (ISO-Muster) + + # Finden der tatsächlichen ISO-Datei + VAR_ISO=$(find_iso_file "$VAR_ISO_PATTERN") + + if [ -z "$VAR_ISO" ]; then + echo "Die ISO-Datei mit dem Muster '$VAR_ISO_PATTERN' wurde nicht gefunden." + exit 1 + fi + default_name=$(get_random_name) - # Benutzereingabe für VM-Konfiguration + # Benutzereingaben für VM-Konfiguration read -p "Wie viele VMs werden benötigt? [1]: " VAR_QUANTITY VAR_QUANTITY=${VAR_QUANTITY:-1} - read -p "Präfix Host Name (Vorgabe: $default_name): " VAR_NAME_PREFIX + read -p "Präfix Host Name (Vorgabe: $default_name): " VAR_NAME_PREFIX read -p "CPUs [2]: " VAR_CPU VAR_CPU=${VAR_CPU:-2} read -p "Memory [2048]: " VAR_MEM @@ -159,7 +159,7 @@ do read -p "Anzahl der HDDs (Standard: 1): " VAR_ADDITIONAL_HDD VAR_ADDITIONAL_HDD=${VAR_ADDITIONAL_HDD:-1} - # Standardwerte festlegen, wenn keine Eingabe erfolgt + # Standardwerte VAR_VIDEO_RAM=64 VAR_NIC1="nat" VAR_NIC2="bridged" @@ -185,7 +185,7 @@ do --register \ --basefolder "$VM_DIR" - # VM-Konfigurieren + # VM-Konfiguration sudo -u "$VAR_USER_IN_GROUP" VBoxManage modifyvm "$VM_NAME" \ --ioapic on \ --memory "$VAR_MEM" \ @@ -193,8 +193,8 @@ do --vram "$VAR_VIDEO_RAM" \ --nic1 $VAR_NIC1 \ --nic2 $VAR_NIC2 \ - --bridgeadapter2 ${VAR_NET} \ - --graphicscontroller "vboxsvga" \ + --bridgeadapter2 ${VAR_NET} \ + --graphicscontroller "vboxsvga" \ --vrde on \ --vrdemulticon on \ --vrdeport "$VAR_RDP_PORT" @@ -241,3 +241,4 @@ do echo "VMs wurden für alle wie angegeben erstellt." break done +