#!/bin/bash # # @Branislav Zeljak v0.2 # # Create VBox VMs VAR_PATH="/srv/data/ISO/" # Funktion zur Benutzerauswahl select_user() { clear echo "Für wen soll es sein?" echo COLUMNS=10 PS3="Ihre Auswahl: " options=("Aktueller Benutzer" "Anderer Benutzer" "Beenden") select opt in "${options[@]}" do case $opt in "Aktueller Benutzer") VAR_USER=$(whoami) break ;; "Anderer Benutzer") read -p "Bitte geben Sie den Namen eines existierenden Benutzers ein: " user_name VAR_USER=$user_name break ;; "Beenden") exit ;; esac done } # Funktion zur Auswahl des Betriebssystems select_os() { clear echo "Welches Betriebssystem soll installiert werden?" echo COLUMNS=10 PS3="Bitte Ihre Auswahl eingeben: " options=("Ubuntu LTS SRV" "Ubuntu LTS GUI" "Debian" "RHEL" "Fedora" "kali-linux" "openSuse" "Manjaro" "Quit") select opt in "${options[@]}" do case $opt in "Ubuntu LTS SRV") VAR_OS="Ubuntu_64" VAR_ISO="ubuntu-*-live-server-amd64.iso" break ;; "Ubuntu LTS GUI") VAR_OS="Ubuntu_64" VAR_ISO="ubuntu-*-desktop-amd64.iso" break ;; "Debian") VAR_OS="Debian_64" VAR_ISO="debian-*.iso" break ;; "RHEL") VAR_OS="Linux_64" VAR_ISO="rhel-*.iso" break ;; "Fedora") VAR_OS="Linux_64" VAR_ISO="Fedora-*.iso" break ;; "kali-linux") VAR_OS="Linux_64" VAR_ISO="kali-linux-*.iso" break ;; "openSuse") VAR_OS="Linux_64" VAR_ISO="openSUSE-*.iso" break ;; "Manjaro") VAR_OS="Linux_64" VAR_ISO="manjaro-xfce-*.iso" break ;; "Quit") exit ;; *) echo "Ungültige Option. Bitte wählen Sie eine gültige Option aus." ;; esac done } # Funktion zur Überprüfung einer gültigen Zahl mit Standardwert validate_number_with_default() { local input="$1" local default="$2" # Überprüfen, ob die Eingabe leer ist if [ -z "$input" ]; then input="$default" fi # Überprüfen, ob die Eingabe eine gültige Zahl ist if ! [[ "$input" =~ ^[0-9]+$ ]]; then echo "Ungültige Eingabe. Bitte geben Sie eine gültige Zahl ein oder lassen Sie es leer für den Standardwert ($default)." exit 1 fi echo "$input" } # Benutzereingabe für VM-Konfiguration & Validierung der Eingabe select_user VAR_VB="/srv/vbox/${VAR_USER}" mkdir -p "$VAR_VB" select_os read -p "Geben Sie die Anzahl der VMs an (Standard: 1): " VAR_QUAN VAR_QUAN=$(validate_number_with_default "$VAR_QUAN" "1") read -p "Praefix Host Name : " VAR_NAME read -p "CPUs (Standard: 1 CPU): " VAR_CPU VAR_CPU=$(validate_number_with_default "$VAR_CPU" "1") read -p "Memory (Standard: 2048 MB-RAM) : " VAR_MEM VAR_MEM=$(validate_number_with_default "$VAR_MEM" "2048") # Variablen: IFS=" " # Standardwerte festlegen, wenn keine Eingabe erfolgt VAR_CPU=${VAR_CPU:-1} VAR_MEM=${VAR_MEM:-2048} VAR_VID=64 VAR_RDP=339 VAR_NIC=bridged VAR_NET=enp4s0f1 # Schliefe zur erzeugung der VMs for N in $(seq 1 $VAR_QUAN) do sudo -u $VAR_USER VBoxManage createvm \ --name ${VAR_NAME}-${N} \ --ostype ${VAR_OS} \ --register \ --basefolder ${VAR_NAME}-${N} sudo -u $VAR_USER VBoxManage modifyvm ${VAR_NAME}-${N} \ --ioapic on \ --cpus ${VAR_CPU} \ --memory ${VAR_MEM} \ --vram ${VAR_VID} \ --graphicscontroller vmsvga \ --nic1 Nat \ --nic2 ${VAR_NIC} \ --bridgeadapter2 ${VAR_NET} \ --vrde on \ --vrdemulticon on \ --vrdeport ${VAR_RDP}${N} sudo -u $VAR_USER VBoxManage createhd \ --filename ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK0.vdi \ --size 102400 \ --format VDI sudo -u $VAR_USER VBoxManage createhd \ --filename ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK1.vdi \ --size 102400 \ --format VDI sudo -u $VAR_USER VBoxManage createhd \ --filename ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK2.vdi \ --size 102400 \ --format VDI sudo -u $VAR_USER VBoxManage createhd \ --filename ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK3.vdi \ --size 102400 \ --format VDI sudo -u $VAR_USER VBoxManage createhd \ --filename ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK4.vdi \ --size 102400 \ --format VDI sudo -u $VAR_USER VBoxManage storagectl ${VAR_NAME}-${N} \ --name "SATA Controller" \ --add sata \ --controller IntelAhci sudo -u $VAR_USER VBoxManage storageattach ${VAR_NAME}-${N} \ --storagectl "SATA Controller" \ --port 0 \ --device 0 \ --type hdd \ --medium ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK0.vdi sudo -u $VAR_USER VBoxManage storageattach ${VAR_NAME}-${N} \ --storagectl "SATA Controller" \ --port 1 \ --device 0 \ --type hdd \ --medium ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK1.vdi sudo -u $VAR_USER VBoxManage storageattach ${VAR_NAME}-${N} \ --storagectl "SATA Controller" \ --port 2 \ --device 0 \ --type hdd \ --medium ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK2.vdi sudo -u $VAR_USER VBoxManage storageattach ${VAR_NAME}-${N} \ --storagectl "SATA Controller" \ --port 3 \ --device 0 \ --type hdd \ --medium ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK3.vdi sudo -u $VAR_USER VBoxManage storageattach ${VAR_NAME}-${N} \ --storagectl "SATA Controller" \ --port 4 \ --device 0 \ --type hdd \ --medium ${VAR_VB}/${VAR_NAME}-${N}/${VAR_NAME}-${N}_DISK4.vdi sudo -u $VAR_USER VBoxManage storagectl ${VAR_NAME}-${N} \ --name "IDE Controller" \ --add ide \ --controller PIIX4 sudo -u $VAR_USER VBoxManage storageattach ${VAR_NAME}-${N} \ --storagectl "IDE Controller" \ --port 1 \ --device 0 \ --type dvddrive \ --medium ${VAR_PATH}/${VAR_ISO} sudo -u $VAR_USER VBoxManage modifyvm ${VAR_NAME}-${N} \ --boot1 dvd \ --boot2 disk \ --boot3 none \ --boot4 none done