From 391abd7ae1b0d4466dc486b80e6b5e3888db07a4 Mon Sep 17 00:00:00 2001 From: braniz Date: Sun, 15 Oct 2023 12:12:58 +0200 Subject: [PATCH] . --- 2.sh | 199 ------------------------------------ 3.sh | 197 ------------------------------------ hdd_vdi_create.sh | 12 ++- neu_vbox_create.sh | 194 ----------------------------------- rdp.sh | 245 +++++++++++++++++++++++++++++++++++++++++++++ rdp_port.txt | 64 ++++++++++++ vbox_create.sh | 2 +- 7 files changed, 317 insertions(+), 596 deletions(-) delete mode 100644 2.sh delete mode 100644 3.sh delete mode 100644 neu_vbox_create.sh create mode 100644 rdp.sh create mode 100644 rdp_port.txt diff --git a/2.sh b/2.sh deleted file mode 100644 index 81379b2..0000000 --- a/2.sh +++ /dev/null @@ -1,199 +0,0 @@ -#!/bin/bash - -# Autor: Branislav Zeljak v0.8 -# Beschreibung: Dieses Skript erstellt VirtualBox-VMs und klonet Festplatten parallel. -# Verwendung: Führen Sie das Skript aus und befolgen Sie die Eingabeaufforderungen. -clear - -# %--------------------start/Funktionen--------------------% - -# Funktion zum Überprüfen der Benutzerexistenz -check_user_existence() { - local user="$1" - if ! id "$user" &>/dev/null; then - echo "Der Benutzer $user existiert nicht auf diesem System." - exit 1 - fi -} - -get_group_users() { - local groupname="$1" - local members - - members=$(getent group "$groupname" | cut -d: -f4) - - if [[ -n "$members" ]]; then - echo "$members" | tr ',' '\n' - else - echo "Die Gruppe $groupname existiert nicht oder hat keine Mitglieder." - fi -} - -# Funktion, um einen zufälligen Host-Namen aus der Liste auszuwählen -get_random_name() { - # Liste der Namen - local names=("frodo" "samweis" "gandalf" "aragorn" "legolas" "gimli" "boromir" "meriadoc" "peregrin" "arwen" "galadriel" "celeborn" "elrond" "glorfindel" "faramir" "eowyn" "theoden" "treebeard" "gollum" "sauron" "saruman" "bilbo" "denethor" "radagast" "thranduil" "bard" "dori" "frodo") - - # Zufälligen Index auswählen - local random_index=$((RANDOM % ${#names[@]})) - echo "${names[random_index]}" -} - -# %--------------------end/Funktionen--------------------% - -echo "Für wen soll es sein?" -echo -COLUMNS=10 -PS3="Ihre Auswahl: " -options=("Aktueller Benutzer" "Anderer Benutzer" "Mitglieder einer Gruppe" "Beenden") -select opt in "${options[@]}" -do - case $opt in - "Aktueller Benutzer") - VAR_GROUP_MEMBERS=$(whoami) - ;; - "Anderer Benutzer") - read -p "Bitte geben Sie einen Benutzernamen ein: " VAR_GROUP_MEMBERS - check_user_existence "$VAR_GROUP_MEMBERS" - ;; - "Mitglieder einer Gruppe") - read -p "Bitte geben Sie den Gruppennamen ein: " VAR_GROUP - if getent group "$VAR_GROUP" &>/dev/null; then - echo "Mitglieder der Gruppe $VAR_GROUP:" - get_group_users "$VAR_GROUP" - VAR_GROUP_MEMBERS=($(get_group_users "$VAR_GROUP")) - else - echo "Die Gruppe $VAR_GROUP existiert nicht auf diesem System." - exit 1 - fi - ;; - "Beenden") - exit - ;; - esac - break -done - -# Variable für das Verzeichnis -VAR_VB="/srv/vbox/${VAR_GROUP_MEMBERS}" - -clear - -echo "Welches Betriebssystem soll installiert werden?" -echo -COLUMNS=10 -PS3="Bitte Ihre Auswahl eingeben: " - -declare -A OS_MAP -OS_MAP=( - ["Ubuntu LTS SRV"]="Ubuntu_64 ubuntu-*-live-server-amd64.iso" - ["Ubuntu LTS GUI BASE"]="Ubuntu_64 ubuntu-*-desktop-amd64.iso" - ["Debian"]="Debian_64 debian-*.iso" - ["RHEL"]="RedHat_64 rhel-*.iso" - ["Fedora"]="Fedora_64 Fedora-*.iso" - ["kali-linux"]="Linux_64 kali-linux-*.iso" - ["linuxmint"]="Linux_64 linuxmint-*.iso" - ["openSUSE"]="OpenSUSE_64 openSUSE-*.iso" - ["Manjaro"]="ArchLinux_64 manjaro-xfce-*.iso" - ["Quit"]="Quit" -) - -# Auswählen und Konfigurieren des Betriebssystems -COLUMNS=10 -PS3="Ihre Auswahl: " -select opt in "${!OS_MAP[@]}" -do - case $opt in - "Quit") - exit - ;; - *) - VAR_OS="${OS_MAP[$opt]%% *}" # Extrahiere den ersten Teil (Betriebssystem) - VAR_ISO="${OS_MAP[$opt]#* }" # Extrahiere den zweiten Teil (ISO-Muster) - ;; - esac - - default_name=$(get_random_name) - - # Schleife zur Erzeugung der VMs für die Benutzer aus der Gruppe - for VAR_USER_IN_GROUP in "${VAR_GROUP_MEMBERS[@]}" - do - # Benutzereingabe für VM-Konfiguration - read -p "Geben Sie die Anzahl der VMs an (Standard: 1): " VAR_QUAN - read -p "Praefix Host Name (Vorgabe: $default_name): " VAR_NAME - read -p "CPUs (Standard: 2 CPU): " VAR_CPU - read -p "Memory (Standard: 2048 MB-RAM) : " VAR_MEM - read -p "Bitte die Anzahl der HDD (Standard: 1-HDD) : " VAR_HDD - - # Variablen: - IFS=" - " - - # Standardwerte festlegen, wenn keine Eingabe erfolgt - VAR_CPU=${VAR_CPU:-2} - VAR_MEM=${VAR_MEM:-2048} - VAR_VID=64 - VAR_RDP=339 - VAR_NIC=bridged - VAR_NET=$(ip addr show | grep "^2: " | awk '{print $2}' | sed 's/://') - VAR_NAME=${VAR_NAME:-$default_name} - VAR_ISO_PATH=/srv/data/ISO/ - - # Schleife zur Erzeugung der VMs - for N in $(seq 1 $VAR_QUAN) - do - ORDER_NUM=$(printf "%02d" $N) # Zweistellige Ordnungszahl generieren - sudo -u $VAR_USER_IN_GROUP VBoxManage createvm \ - --name ${VAR_NAME}-${ORDER_NUM} \ - --ostype ${VAR_OS} \ - --register \ - - sudo -u $VAR_USER_IN_GROUP VBoxManage modifyvm ${VAR_NAME}-${ORDER_NUM} \ - --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}${ORDER_NUM} - - sudo -u $VAR_USER_IN_GROUP VBoxManage storagectl ${VAR_NAME}-${ORDER_NUM} \ - --name "SATA Controller" \ - --add sata \ - --controller IntelAhci - - sudo -u $VAR_USER_IN_GROUP VBoxManage storagectl ${VAR_NAME}-${ORDER_NUM} \ - --name "IDE Controller" \ - --add ide \ - --controller PIIX4 - - sudo -u $VAR_USER_IN_GROUP VBoxManage storageattach ${VAR_NAME}-${ORDER_NUM} \ - --storagectl "IDE Controller" \ - --port 1 \ - --device 0 \ - --type dvddrive \ - --medium ${VAR_ISO_PATH}${VAR_ISO} - - # HDD erzeugen und zuweisen - for j in $(seq 1 ${VAR_HDD}) - do - HDD_NUM=$(printf "%02d" $j) - sudo -u $VAR_USER_IN_GROUP VBoxManage createhd \ - --filename ${VAR_VB}/${VAR_NAME}-${ORDER_NUM}/${VAR_NAME}-${ORDER_NUM}_DISK${HDD_NUM}.vdi \ - --size 102400 \ - --format VDI - sudo -u $VAR_USER_IN_GROUP VBoxManage storageattach ${VAR_NAME}-${ORDER_NUM} \ - --storagectl "SATA Controller" \ - --port $j \ - --device 0 \ - --type hdd \ - --medium ${VAR_VB}/${VAR_NAME}-${ORDER_NUM}/${VAR_NAME}-${ORDER_NUM}_DISK${HDD_NUM}.vdi - done - done - done - break -done diff --git a/3.sh b/3.sh deleted file mode 100644 index 65118da..0000000 --- a/3.sh +++ /dev/null @@ -1,197 +0,0 @@ -#!/bin/bash - -# Autor: Branislav Zeljak v0.9 -# Beschreibung: Dieses Skript erstellt VirtualBox-VMs und klonet Festplatten parallel. -# Verwendung: Führen Sie das Skript aus und befolgen Sie die Eingabeaufforderungen. -clear - -# %--------------------start/Funktionen--------------------% - -# Funktion zum Überprüfen der Benutzerexistenz -check_user_existence() { - local user="$1" - if ! id "$user" &>/dev/null; then - echo "Der Benutzer $user existiert nicht auf diesem System." - exit 1 - fi -} - -get_group_users() { - local groupname="$1" - local members - - members=$(getent group "$groupname" | cut -d: -f4) - - if [[ -n "$members" ]]; then - echo "$members" | tr ',' '\n' - else - echo "Die Gruppe $groupname existiert nicht oder hat keine Mitglieder." - fi -} - -# Funktion, um einen zufälligen Host-Namen aus der Liste auszuwählen -get_random_name() { - # Liste der Namen - local names=("frodo" "samweis" "gandalf" "aragorn" "legolas" "gimli" "boromir" "meriadoc" "peregrin" "arwen" "galadriel" "celeborn" "elrond" "glorfindel" "faramir" "eowyn" "theoden" "treebeard" "gollum" "sauron" "saruman" "bilbo" "denethor" "radagast" "thranduil" "bard" "dori" "frodo") - - # Zufälligen Index auswählen - local random_index=$((RANDOM % ${#names[@]})) - echo "${names[random_index]}" -} - -# %--------------------end/Funktionen--------------------% - -echo "Für wen soll es sein?" -echo -COLUMNS=10 -PS3="Ihre Auswahl: " -options=("Aktueller Benutzer" "Anderer Benutzer" "Mitglieder einer Gruppe" "Beenden") -select opt in "${options[@]}" -do - case $opt in - "Aktueller Benutzer") - VAR_GROUP_MEMBERS=$(whoami) - ;; - "Anderer Benutzer") - read -p "Bitte geben Sie einen Benutzernamen ein: " VAR_GROUP_MEMBERS - check_user_existence "$VAR_GROUP_MEMBERS" - ;; - "Mitglieder einer Gruppe") - read -p "Bitte geben Sie den Gruppennamen ein: " VAR_GROUP - if getent group "$VAR_GROUP" &>/dev/null; then - echo "Mitglieder der Gruppe $VAR_GROUP:" - get_group_users "$VAR_GROUP" - VAR_GROUP_MEMBERS=($(get_group_users "$VAR_GROUP")) - else - echo "Die Gruppe $VAR_GROUP existiert nicht auf diesem System." - exit 1 - fi - ;; - "Beenden") - exit - ;; - esac - break -done - -# Variable für das Verzeichnis -VAR_VB="/srv/vbox" - -echo "Welches Betriebssystem soll installiert werden?" -echo -COLUMNS=10 -PS3="Bitte Ihre Auswahl eingeben: " - -declare -A OS_MAP -OS_MAP=( - ["Ubuntu LTS SRV"]="Ubuntu_64 ubuntu-*-live-server-amd64.iso" - ["Ubuntu LTS GUI BASE"]="Ubuntu_64 ubuntu-*-desktop-amd64.iso" - ["Debian"]="Debian_64 debian-*.iso" - ["RHEL"]="RedHat_64 rhel-*.iso" - ["Fedora"]="Fedora_64 Fedora-*.iso" - ["kali-linux"]="Linux_64 kali-linux-*.iso" - ["linuxmint"]="Linux_64 linuxmint-*.iso" - ["openSUSE"]="OpenSUSE_64 openSUSE-*.iso" - ["Manjaro"]="ArchLinux_64 manjaro-xfce-*.iso" - ["Quit"]="Quit" -) - -# Auswählen und Konfigurieren des Betriebssystems -COLUMNS=10 -PS3="Ihre Auswahl: " -select opt in "${!OS_MAP[@]}" -do - case $opt in - "Quit") - exit - ;; - *) - VAR_OS="${OS_MAP[$opt]%% *}" # Extrahiere den ersten Teil (Betriebssystem) - VAR_ISO="${OS_MAP[$opt]#* }" # Extrahiere den zweiten Teil (ISO-Muster) - ;; - esac - - default_name=$(get_random_name) - - # Benutzereingabe für VM-Konfiguration - read -p "Geben Sie die Anzahl der VMs an (Standard: 1): " VAR_QUAN - read -p "Praefix Host Name (Vorgabe: $default_name): " VAR_NAME - read -p "CPUs (Standard: 2 CPU): " VAR_CPU - read -p "Memory (Standard: 2048 MB-RAM) : " VAR_MEM - read -p "Bitte die Anzahl der HDD (Standard: 1-HDD) : " VAR_HDD - - # Variablen: - IFS=" - " - - # Standardwerte festlegen, wenn keine Eingabe erfolgt - VAR_CPU=${VAR_CPU:-2} - VAR_MEM=${VAR_MEM:-2048} - VAR_VID=64 - VAR_RDP=339 - VAR_NIC=bridged - VAR_NET=$(ip addr show | grep "^2: " | awk '{print $2}' | sed 's/://') - VAR_NAME=${VAR_NAME:-$default_name} - VAR_ISO_PATH=/srv/data/ISO/ - - # Schleife zur Erzeugung der VMs für die Benutzer aus der Gruppe - for VAR_USER_IN_GROUP in "${VAR_GROUP_MEMBERS[@]}" - do - # Schleife zur Erzeugung der VMs - for N in $(seq 1 $VAR_QUAN) - do - ORDER_NUM=$(printf "%02d" $N) # Zweistellige Ordnungszahl generieren - sudo -u $VAR_USER_IN_GROUP VBoxManage createvm \ - --name ${VAR_NAME}-${ORDER_NUM} \ - --ostype ${VAR_OS} \ - --register \ - - sudo -u $VAR_USER_IN_GROUP VBoxManage modifyvm ${VAR_NAME}-${ORDER_NUM} \ - --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}${ORDER_NUM} - - sudo -u $VAR_USER_IN_GROUP VBoxManage storagectl ${VAR_NAME}-${ORDER_NUM} \ - --name "SATA Controller" \ - --add sata \ - --controller IntelAhci - - sudo -u $VAR_USER_IN_GROUP VBoxManage storagectl ${VAR_NAME}-${ORDER_NUM} \ - --name "IDE Controller" \ - --add ide \ - --controller PIIX4 - - sudo -u $VAR_USER_IN_GROUP VBoxManage storageattach ${VAR_NAME}-${ORDER_NUM} \ - --storagectl "IDE Controller" \ - --port 1 \ - --device 0 \ - --type dvddrive \ - --medium ${VAR_ISO_PATH}${VAR_ISO} - - # HDD erzeugen und zuweisen - for j in $(seq 1 ${VAR_HDD}) - do - HDD_NUM=$(printf "%02d" $j) - sudo -u $VAR_USER_IN_GROUP VBoxManage createhd \ - --filename ${VAR_VB}/${VAR_NAME}-${ORDER_NUM}/${VAR_NAME}-${ORDER_NUM}_DISK${HDD_NUM}.vdi \ - --size 102400 \ - --format VDI - sudo -u $VAR_USER_IN_GROUP VBoxManage storageattach ${VAR_NAME}-${ORDER_NUM} \ - --storagectl "SATA Controller" \ - --port $j \ - --device 0 \ - --type hdd \ - --medium ${VAR_VB}/${VAR_NAME}-${ORDER_NUM}/${VAR_NAME}-${ORDER_NUM}_DISK${HDD_NUM}.vdi - done - done - done - break -done diff --git a/hdd_vdi_create.sh b/hdd_vdi_create.sh index 5287153..8bf3b54 100755 --- a/hdd_vdi_create.sh +++ b/hdd_vdi_create.sh @@ -147,8 +147,9 @@ do # Variablen VAR_PATH_TO_VDI="/srv/data/VDI" VAR_VIDEO_RAM=64 - VAR_NIC1="Nat" - VAR_NIC2="bridged" + VAR_NIC=bridged + #VAR_NET=enp4s0f1 + VAR_NET=$(ip addr show | grep "2: " | awk '{print $2}' | sed 's/://') VAR_NAME_PREFIX=${VAR_NAME_PREFIX:-$default_name} # Schleife zur Erzeugung der VMs für jeden Benutzer in der Gruppe @@ -162,7 +163,7 @@ do for ((i = 1; i <= VAR_QUANTITY; i++)) do # VM erstellen - VM_NAME="${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}--VM$(printf "%02d" $i)" + VM_NAME="${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}-VM$(printf "%02d" $i)" VM_DIR="/srv/vbox/$VAR_USER_IN_GROUP/$VM_NAME" sudo -u "$VAR_USER_IN_GROUP" VBoxManage createvm \ @@ -177,8 +178,9 @@ do --memory "$VAR_MEM" \ --cpus "$VAR_CPU" \ --vram "$VAR_VIDEO_RAM" \ - --nic1 "$VAR_NIC1" \ - --nic2 "$VAR_NIC2" \ + --nic1 Nat \ + --nic2 ${VAR_NIC} \ + --bridgeadapter2 ${VAR_NET} \ --graphicscontroller vmsvga \ --vrde on \ --vrdemulticon on \ diff --git a/neu_vbox_create.sh b/neu_vbox_create.sh deleted file mode 100644 index 291ebdc..0000000 --- a/neu_vbox_create.sh +++ /dev/null @@ -1,194 +0,0 @@ -#!/bin/bash - -# Autor: Branislav Zeljak v0.8 -# Beschreibung: Dieses Skript erstellt VirtualBox-VMs und klonet Festplatten parallel. -# Verwendung: Führen Sie das Skript aus und befolgen Sie die Eingabeaufforderungen. -clear - -# %--------------------start/Funktionen--------------------% - -# Funktion zum Überprüfen der Benutzerexistenz -check_user_existence() { - local user="$1" - if ! id "$user" &>/dev/null; then - echo "Der Benutzer $user existiert nicht auf diesem System." - exit 1 - fi -} - -get_group_users() { - local groupname="$1" - local members - - members=$(getent group "$groupname" | cut -d: -f4) - - if [[ -n "$members" ]]; then - echo "$members" | tr ',' '\n' - else - echo "Die Gruppe $groupname existiert nicht oder hat keine Mitglieder." - fi -} - -# Funktion, um einen zufälligen Host-Namen aus der Liste auszuwählen -get_random_name() { - # Liste der Namen - local names=("frodo" "samweis" "gandalf" "aragorn" "legolas" "gimli" "boromir" "meriadoc" "peregrin" "arwen" "galadriel" "celeborn" "elrond" "glorfindel" "faramir" "eowyn" "theoden" "treebeard" "gollum" "sauron" "saruman" "bilbo" "denethor" "radagast" "thranduil" "bard" "dori" "frodo") - - # Zufälligen Index auswählen - local random_index=$((RANDOM % ${#names[@]})) - echo "${names[random_index]}" -} - -# %--------------------end/Funktionen--------------------% - -echo "Für wen soll es sein?" -echo -COLUMNS=10 -PS3="Ihre Auswahl: " -options=("Aktueller Benutzer" "Anderer Benutzer" "Mitglieder einer Gruppe" "Beenden") -select opt in "${options[@]}" -do - case $opt in - "Aktueller Benutzer") - VAR_GROUP_MEMBERS=$(whoami) - ;; - "Anderer Benutzer") - read -p "Bitte geben Sie einen Benutzernamen ein: " VAR_GROUP_MEMBERS - check_user_existence "$VAR_GROUP_MEMBERS" - ;; - "Mitglieder einer Gruppe") - read -p "Bitte geben Sie den Gruppennamen ein: " VAR_GROUP - if getent group "$VAR_GROUP" &>/dev/null; then - echo "Mitglieder der Gruppe $VAR_GROUP:" - get_group_users "$VAR_GROUP" - VAR_GROUP_MEMBERS=($(get_group_users "$VAR_GROUP")) - else - echo "Die Gruppe $VAR_GROUP existiert nicht auf diesem System." - exit 1 - fi - ;; - "Beenden") - exit - ;; - esac - break -done - -# Variable für das Verzeichnis -VAR_VB="/srv/vbox/${VAR_GROUP_MEMBERS}" - -clear - -echo "Welches Betriebssystem soll installiert werden?" -echo -COLUMNS=10 -PS3="Bitte Ihre Auswahl eingeben: " - -declare -A OS_MAP -OS_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" - ["kali-linux"]="Linux_64 kali-linux-*.iso" - ["linuxmint"]="Linux_64 linuxmint-*.iso" - ["openSUSE"]="OpenSUSE_64 openSUSE-*.iso" - ["Manjaro"]="ArchLinux_64 manjaro-xfce-*.iso" - ["Quit"]="Quit" -) - -select opt in "${!OS_MAP[@]}" -do - case $opt in - "Quit") - exit - ;; - *) - VAR_OS="${OS_MAP[$opt]%% *}" # Extrahiere den ersten Teil (Betriebssystem) - VAR_ISO="${OS_MAP[$opt]#* }" # Extrahiere den zweiten Teil (ISO-Muster) - ;; - esac - -default_name=$(get_random_name) - -# Benutzereingabe für VM-Konfiguration - read -p "Geben Sie die Anzahl der VMs an (Standard: 1): " VAR_QUAN - read -p "Praefix Host Name (Vorgabe: $default_name): " VAR_NAME - read -p "CPUs (Standard: 2 CPU): " VAR_CPU - read -p "Memory (Standard: 2048 MB-RAM) : " VAR_MEM - read -p "Bitte die Anzahl der HDD (Standard: 1-HDD) : " VAR_HDD - -# Variablen: -IFS=" -" - -# Standardwerte festlegen, wenn keine Eingabe erfolgt -VAR_CPU=${VAR_CPU:-2} -VAR_MEM=${VAR_MEM:-2048} -VAR_VID=64 -VAR_RDP=339 -VAR_NIC=bridged -#VAR_NET=enp4s0f1 -VAR_NET=$(ip addr show | grep "^2: " | awk '{print $2}' | sed 's/://') -VAR_NAME=${VAR_NAME:-$default_name} -VAR_ISO_PATH=/srv/data/ISO/ - -# Schleife zur Erzeugung der VMs -for N in $(seq 1 $VAR_QUAN) -do -ORDER_NUM=$(printf "%02d" $N) # Zweistellige Ordnungszahl generieren - sudo -u $VAR_GROUP_MEMBERS VBoxManage createvm \ - --name ${VAR_NAME}-${ORDER_NUM} \ - --ostype ${VAR_OS} \ - --register \ - - sudo -u $VAR_GROUP_MEMBERS VBoxManage modifyvm ${VAR_NAME}-${ORDER_NUM} \ - --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}${ORDER_NUM} - - sudo -u $VAR_GROUP_MEMBERS VBoxManage storagectl ${VAR_NAME}-${ORDER_NUM} \ - --name "SATA Controller" \ - --add sata \ - --controller IntelAhci - - sudo -u $VAR_GROUP_MEMBERS VBoxManage storagectl ${VAR_NAME}-${ORDER_NUM} \ - --name "IDE Controller" \ - --add ide \ - --controller PIIX4 - - sudo -u $VAR_GROUP_MEMBERS VBoxManage storageattach ${VAR_NAME}-${ORDER_NUM} \ - --storagectl "IDE Controller" \ - --port 1 \ - --device 0 \ - --type dvddrive \ - --medium ${VAR_ISO_PATH}${VAR_ISO} - -# HDD erzeugen und zuweisen - for j in $(seq 1 ${VAR_HDD}) - do - HDD_NUM=$(printf "%02d" $j) - sudo -u $VAR_GROUP_MEMBERS VBoxManage createhd \ - --filename ${VAR_VB}/${VAR_NAME}-${ORDER_NUM}/${VAR_NAME}-${ORDER_NUM}_DISK${HDD_NUM}.vdi \ - --size 102400 \ - --format VDI - sudo -u $VAR_GROUP_MEMBERS VBoxManage storageattach ${VAR_NAME}-${ORDER_NUM} \ - --storagectl "SATA Controller" \ - --port $j \ - --device 0 \ - --type hdd \ - --medium ${VAR_VB}/${VAR_NAME}-${ORDER_NUM}/${VAR_NAME}-${ORDER_NUM}_DISK${HDD_NUM}.vdi - done - - done - break -done diff --git a/rdp.sh b/rdp.sh new file mode 100644 index 0000000..74f4077 --- /dev/null +++ b/rdp.sh @@ -0,0 +1,245 @@ +#!/bin/bash + +# Autor: Branislav Zeljak v0.8 +# Beschreibung: Dieses Skript erstellt VirtualBox-VMs und klonet Festplatten parallel. +# Verwendung: Führen Sie das Skript aus und befolgen Sie die Eingabeaufforderungen. + +clear + +# %--------------------start/Funktionen--------------------% + +# Funktion zur Überprüfung der Benutzerexistenz +check_user_existence() { + local VAR_USER_IN_GROUP="$1" + if ! grep -q "^$VAR_USER_IN_GROUP:" /etc/passwd; then + echo "Der Benutzer $VAR_USER_IN_GROUP existiert nicht auf diesem System." + exit 1 + fi +} + +get_group_users() { + local groupname="$1" + local members + + members=$(getent group "$groupname" | cut -d: -f4) + + if [[ -n "$members" ]]; then + echo "$members" | tr ',' '\n' + else + echo "Die Gruppe $groupname existiert nicht oder hat keine Mitglieder." + fi +} + +# Funktion, um einen zufälligen Host-Namen aus der Liste auszuwählen +get_random_name() { + # Liste der Namen + local names=("frodo" "samweis" "gandalf" "aragorn" "legolas" "gimli" "boromir" "meriadoc" "peregrin" "arwen" "galadriel" "celeborn" "elrond" "glorfindel" "faramir" "eowyn" "theoden" "treebeard" "gollum" "sauron" "saruman" "bilbo" "denethor" "radagast" "thranduil" "bard" "dori" "frodo") + + # Zufälligen Index auswählen + local random_index=$((RANDOM % ${#names[@]})) + echo "${names[random_index]}" + +} + +# Funktion zur Generierung eines eindeutigen RDP-Ports +generate_unique_rdp_port() { + local rdp_port + local rdp_port_file="/srv/vbox/rdpport.txt" + while true; do + rdp_port=$(shuf -i 3390-49151 -n 1) + if ! grep -q "^$rdp_port$" "$rdp_port_file"; then + echo "$rdp_port" + break + fi + done +} + +# %--------------------end/Funktionen--------------------% + +echo "User / Passwort: user00/Start1234" +echo "Welches VDI-OS soll installiert werden" +echo + +echo "Für wen soll es sein?" +echo +COLUMNS=10 +PS3="Ihre Auswahl: " +options=("Aktueller Benutzer" "Anderer Benutzer" "Mitglieder einer Gruppe" "Beenden") +select opt in "${options[@]}" +do + case $opt in + "Aktueller Benutzer") + VAR_GROUP_MEMBERS=$(whoami) + ;; + "Anderer Benutzer") + read -p "Bitte geben Sie einen Benutzernamen ein: " VAR_GROUP_MEMBERS + if grep -q "^$VAR_GROUP_MEMBERS:" /etc/passwd; then + echo "Der Benutzer $VAR_GROUP_MEMBERS existiert auf diesem System." + else + echo "Der Benutzer $VAR_GROUP_MEMBERS existiert nicht auf diesem System." + exit 1 + fi + ;; + "Mitglieder einer Gruppe") + read -p "Bitte geben Sie den Gruppennamen ein: " VAR_GROUP + if getent group "$VAR_GROUP" &>/dev/null; then + echo "Mitglieder der Gruppe $VAR_GROUP:" + get_group_users "$VAR_GROUP" + VAR_GROUP_MEMBERS=($(get_group_users "$VAR_GROUP")) + else + echo "Die Gruppe $VAR_GROUP existiert nicht auf diesem System." + exit 1 + fi + ;; + "Beenden") + exit + ;; + esac + break +done + +COLUMNS=8 +PS3='Bitte wählen Sie die VM-Option: ' +OPTIONS=("Ubuntu 2204 GUI BASE" "Ubuntu 2204 SRV" "Ubuntu 2204 GUI" "openSUSE GUI" "Kali Linux" "Debian" "Fedora" "Beenden") +select opt in "${OPTIONS[@]}" +do + case $opt in + "Ubuntu 2204 GUI BASE") + VAR_OS="Ubuntu_64" + VAR_VDI="ubu2204-GUI-BASE.vdi" + ;; + "Ubuntu 2204 SRV") + VAR_OS="Ubuntu_64" + VAR_VDI="ubu2204-SRV.vdi" + ;; + "Ubuntu 2204 GUI") + VAR_OS="Ubuntu_64" + VAR_VDI="ubu2204-GUI.vdi" + ;; + "openSUSE GUI") + VAR_OS="OpenSUSE_Tumbleweed_64" + VAR_VDI="openSUSE-GUI.vdi" + ;; + "Kali Linux") + VAR_OS="Linux_64" + VAR_VDI="kali_linux-GUI.vdi" + ;; + "Debian") + VAR_OS="Debian_64" + VAR_VDI="debian-GUI.vdi" + ;; + "Fedora") + VAR_OS="Fedora_64" + VAR_VDI="fedora.vdi" + ;; + "Beenden") + exit + ;; + esac + + default_name=$(get_random_name) + + # Benutzereingaben + 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 "CPUs [2]: " VAR_CPU + VAR_CPU=${VAR_CPU:-2} + read -p "Memory [2048]: " VAR_MEM + VAR_MEM=${VAR_MEM:-2048} + read -p "Anzahl der zusätzlichen HDDs (Standard: 0): " VAR_ADDITIONAL_HDD + VAR_ADDITIONAL_HDD=${VAR_ADDITIONAL_HDD:-0} + + # Variablen + VAR_PATH_TO_VDI="/srv/data/VDI" + VAR_VIDEO_RAM=64 + VAR_RDP_PORT=339 + VAR_NIC1="Nat" + VAR_NIC2="bridged" + VAR_NET_INTERFACE="enp4s0f1" + VAR_NAME_PREFIX=${VAR_NAME_PREFIX:-$default_name} + + # Schleife zur Erzeugung der VMs für jeden Benutzer in der Gruppe + for VAR_USER_IN_GROUP in "${VAR_GROUP_MEMBERS[@]}" + do + # Schleife zur Erzeugung der angeforderten Anzahl von VMs + for ((i = 1; i <= VAR_QUANTITY; i++)) + do + # VM erstellen + VM_NAME="${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}--VM$(printf "%02d" $i)" + VM_DIR="/srv/vbox/$VAR_USER_IN_GROUP/$VM_NAME" + + sudo -u "$VAR_USER_IN_GROUP" VBoxManage createvm \ + --name "$VM_NAME" \ + --ostype "$VAR_OS" \ + --register \ + --basefolder "$VM_DIR" + + # VM-Konfigurieren + sudo -u "$VAR_USER_IN_GROUP" VBoxManage modifyvm "$VM_NAME" \ + --ioapic on \ + --memory "$VAR_MEM" \ + --cpus "$VAR_CPU" \ + --vram "$VAR_VIDEO_RAM" \ + --nic1 "$VAR_NIC1" \ + --graphicscontroller vmsvga \ + --nic2 "$VAR_NIC2" \ + --bridgeadapter2 "$VAR_NET_INTERFACE" \ + --vrde on \ + --vrdemulticon on \ + --vrdeport "$VAR_RDP_PORT$(printf "%02d" $i)" + + # Festplattencontroller hinzufügen + sudo -u "$VAR_USER_IN_GROUP" VBoxManage storagectl "$VM_NAME" \ + --name "SATA Controller" \ + --add sata \ + --controller IntelAhci + + # IDE-Controller für DVD + sudo -u "$VAR_USER_IN_GROUP" VBoxManage storagectl "$VM_NAME" \ + --name "IDE Controller" \ + --add ide \ + --controller PIIX4 + + # Schleife zur Erzeugung von zusätzlichen Festplatten + for ((j = 1; j <= VAR_ADDITIONAL_HDD; j++)) + do + HDD_NUM=$(printf "%02d" $j) + HDD_NAME="${VM_NAME}-disk${HDD_NUM}.vdi" + + sudo -u "$VAR_USER_IN_GROUP" VBoxManage createhd \ + --filename "$VM_DIR/$HDD_NAME" \ + --size 102400 \ + --format VDI + + sudo -u "$VAR_USER_IN_GROUP" VBoxManage storageattach "$VM_NAME" \ + --storagectl "SATA Controller" \ + --port "$HDD_NUM" \ + --device 0 \ + --type hdd \ + --medium "$VM_DIR/$HDD_NAME" + done + + # Klonen der ersten Festplatte und Registrieren (in Hintergrundprozessen) + { + sudo -u "$VAR_USER_IN_GROUP" VBoxManage clonehd "${VAR_PATH_TO_VDI}/${VAR_VDI}" "$VM_DIR/${VM_NAME}-disk00.vdi" + sudo -u "$VAR_USER_IN_GROUP" VBoxManage storageattach "$VM_NAME" \ + --storagectl "SATA Controller" \ + --port 0 \ + --device 0 \ + --type hdd \ + --medium "$VM_DIR/${VM_NAME}-disk00.vdi" + } & + + # Generieren und Speichern des eindeutigen RDP-Ports in /srv/vbox/rdpport.txt + VAR_RDP_PORT=$(generate_unique_rdp_port) + echo "$VAR_RDP_PORT" >> "/srv/vbox/rdpport.txt" + done + done + + # Warten auf das Ende der Hintergrundprozesse + wait + + echo "VMs wurden für alle wie angegeben erstellt." + break +done diff --git a/rdp_port.txt b/rdp_port.txt new file mode 100644 index 0000000..92ed681 --- /dev/null +++ b/rdp_port.txt @@ -0,0 +1,64 @@ +faramir-vhs01--VM01-20830 +faramir-vhs02--VM01-23971 +faramir-vhs03--VM01-34686 +arwen-vhs02--VM01-34816 +eowyn-vhs01--VM01-25325 +galadriel-vhs01--VM01-44787 +galadriel-vhs02--VM01-47597 +galadriel-vhs03--VM01-39586 +aragorn-vhs01--VM01-9061 +aragorn-vhs02--VM01-19436 +aragorn-vhs03--VM01-29926 +aragorn-vhs01--VM01- +aragorn-vhs02--VM01- +aragorn-vhs03--VM01- +frodo-vhs01--VM01-40295 +frodo-vhs02--VM01-15264 +frodo-vhs03--VM01-26105 +arwen-braniz--VM01-30069 +eowyn-braniz--VM01-9019 +elrond-braniz--VM01-13616 +dori-braniz--VM01-40425 +meriadoc-braniz--VM01-30737 +galadriel-vhs01--VM01-46081 +gandalf-braniz--VM01-15874 +dori-vhs01--VM01-13472 +elrond-braniz--VM01-4117 +elrond-braniz--VM01-18066 +boromir-vhs01--VM01-11386 +boromir-vhs02--VM01-40200 +boromir-vhs03--VM01-34233 +glorfindel-vhs01--VM01-19832 +glorfindel-vhs02--VM01-32452 +glorfindel-vhs03--VM01-47285 +elrond-vhs01--VM01-24891 +elrond-vhs02--VM01-9719 +elrond-vhs03--VM01-15605 +glorfindel-braniz--VM01-13756 +glorfindel-braniz--VM02-13756 +gimli-vhs02--VM01-23133 +gimli-vhs02--VM02-23133 +gollum-vhs01--VM01-18454 +gollum-vhs01--VM02-18454 +gollum-vhs02--VM01-19965 +gollum-vhs02--VM02-19965 +gollum-vhs03--VM01-16106 +gollum-vhs03--VM02-16106 +frodo-braniz--VM01-21217 +glorfindel-braniz--VM01-41212 +thranduil-vhs01--VM01-35424 +thranduil-vhs02--VM01-27215 +thranduil-vhs03--VM01-11695 +treebeard-braniz--VM01-5438 +bilbo-braniz-VM01-9216 +eowyn-braniz-VM01-10758 +ubuntu2204-vhs01-VM01-41631 +ubuntu2204-vhs02-VM01-14729 +ubuntu2204-vhs03-VM01-36824 +ubuntu2204-vhs04-VM01-13115 +ubuntu2204-vhs05-VM01-3540 +ubuntu2204-vhs06-VM01-20502 +ubuntu2204-vhs07-VM01-32912 +ubuntu2204-vhs08-VM01-41812 +ubuntu2204-vhs09-VM01-39403 +ubuntu2204-vhs10-VM01-21627 diff --git a/vbox_create.sh b/vbox_create.sh index 5daf748..9425d58 100755 --- a/vbox_create.sh +++ b/vbox_create.sh @@ -238,4 +238,4 @@ do echo "VMs wurden für alle wie angegeben erstellt." break -done +done \ No newline at end of file