From 051fb88b2e88848e799e3a015449052e8b9e7032 Mon Sep 17 00:00:00 2001 From: braniz Date: Tue, 3 Oct 2023 08:59:24 +0200 Subject: [PATCH] . --- grp_neu.sh | 177 ------------------------ grp_vdi.sh => grp_vdi_create.sh | 62 +++++---- neu_vdi_create.sh => user_vdi_create.sh | 0 vbox_neu_create.sh | 0 4 files changed, 33 insertions(+), 206 deletions(-) delete mode 100644 grp_neu.sh rename grp_vdi.sh => grp_vdi_create.sh (60%) mode change 100644 => 100755 rename neu_vdi_create.sh => user_vdi_create.sh (100%) delete mode 100644 vbox_neu_create.sh diff --git a/grp_neu.sh b/grp_neu.sh deleted file mode 100644 index 9687cef..0000000 --- a/grp_neu.sh +++ /dev/null @@ -1,177 +0,0 @@ -#!/bin/bash - -# Autor: Branislav Zeljak v0.1 -# Beschreibung: Dieses Skript erstellt VirtualBox-VMs und klonet Festplatten parallel. -# Verwendung: Führen Sie das Skript aus und befolgen Sie die Eingabeaufforderungen. -clear - -VAR_USER=$(whoami) - -# %--------------------start/Funktionen--------------------% - -# Funktion zum Überprüfen der Benutzerexistenz -check_user_existence() { - local VAR_USER="$1" - if ! grep -q "^$VAR_USER:" /etc/passwd; then - echo "Der Benutzer $VAR_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 -} - -# %--------------------end/Funktionen--------------------% - -echo "User / Passwort: $VAR_USER/Start1234" -echo "Welches VDI-OS soll installiert werden" -echo - -echo "Für wenn soll es sein?" -echo -COLUMNS=10 -PS3="Ihre Auswahl: " -options=("Aktueller Benutzer" "Anderer Benutzer" "Mitglieder der Gruppe" "Beenden") -select opt in "${options[@]}" -do - case $opt in - "Aktueller Benutzer") - VAR_USER=$(whoami) - ;; - "Anderer Benutzer") - read -p "Bitte geben Sie einen Benutzernamen ein: " VAR_USER - if grep -q "^$VAR_USER:" /etc/passwd; then - echo "Der Benutzer $VAR_USER existiert auf diesem System." - else - echo "Der Benutzer $VAR_USER existiert nicht auf diesem System." - exit 1 - fi - ;; - "Mitglieder der Gruppe") - read -p "Bitte den Gruppennamen eingeben: " VAR_GROUP - ;; - "Beenden") - exit - ;; - esac - break -done - -COLUMNS=8 -PS3='Please enter your choice: ' -OPTIONS=("Ubuntu 2204 SRV" "Ubuntu 2204 GUI" "Quit") -select opt in "${OPTIONS[@]}" -do - case $opt in - "Ubuntu 2204 SRV") - VAR_OS="Ubuntu_64" - VAR_VDI="ubu2204-SRV.vdi" - ;; - "Ubuntu 2204 GUI") - VAR_OS="Ubuntu_64" - VAR_VDI="ubu2204-GUI.vdi" - ;; - *) - echo "Invalid option $REPLY" - ;; - esac - - # Benutzereingaben - read -p "Wie viele VMs werden benötigt? [1]: " VAR_QUANTITY - VAR_QUANTITY=${VAR_QUANTITY:-1} - read -p "Präfix Host 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} - - # Variablen - VAR_PATH_TO_VDI="/srv/data/VDI" - VAR_VBOX_DIR="/srv/vbox/$VAR_USER" - VAR_VIDEO_RAM=64 - VAR_RDP_PORT=339 - VAR_NIC1="Nat" - VAR_NIC2="bridged" - VAR_NET_INTERFACE="enp4s0f1" - - # Benutzer in der Gruppe abrufen - GROUP_USERS=($(get_group_users "$VAR_GROUP")) - - if [[ "${#GROUP_USERS[@]}" -eq 0 ]]; then - echo "Die Gruppe $VAR_GROUP existiert nicht oder hat keine Mitglieder." - exit 1 - fi - - # Schleife zur Erzeugung der VMs - for GROUP_USER in "${GROUP_USERS[@]}" - do - check_user_existence "$GROUP_USER" - - for VAR_N in $(seq 1 $VAR_QUANTITY) - do - # VM erstellen - sudo -u "$GROUP_USER" VBoxManage createvm \ - --name "${VAR_NAME_PREFIX}-${VAR_N}" \ - --ostype "$VAR_OS" \ - --register \ - --basefolder "/srv/vbox/$GROUP_USER" - - # VM-Konfigurieren - sudo -u "$GROUP_USER" VBoxManage modifyvm "${VAR_NAME_PREFIX}-${VAR_N}" \ - --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${VAR_N}" - - # Festplattencontroller hinzufügen - sudo -u "$GROUP_USER" VBoxManage storagectl "${VAR_NAME_PREFIX}-${VAR_N}" \ - --name "SATA Controller" \ - --add sata \ - --controller IntelAhci - - # Klonen der Festplatte (in Hintergrundprozessen) - { - sudo -u "$GROUP_USER" VBoxManage clonehd "${VAR_PATH_TO_VDI}/${VAR_VDI}" "/srv/vbox/$GROUP_USER/${VAR_NAME_PREFIX}-${VAR_N}/${VAR_NAME_PREFIX}-${VAR_N}-disk0.vdi" - } & - done - done - - # Warten auf das Ende der Hintergrundprozesse - wait - - # Anhängen der geklonten Festplatte - for GROUP_USER in "${GROUP_USERS[@]}" - do - for VAR_N in $(seq 1 $VAR_QUANTITY) - do - sudo -u "$GROUP_USER" VBoxManage storageattach "${VAR_NAME_PREFIX}-${VAR_N}" \ - --storagectl "SATA Controller" \ - --port 0 \ - --device 0 \ - --type hdd \ - --medium "/srv/vbox/$GROUP_USER/${VAR_NAME_PREFIX}-${VAR_N}/${VAR_NAME_PREFIX}-${VAR_N}-disk0.vdi" - done - done - - # Schleife beenden - break -done - -echo "VMs wurden erstellt und Festplatten geklont." diff --git a/grp_vdi.sh b/grp_vdi_create.sh old mode 100644 new mode 100755 similarity index 60% rename from grp_vdi.sh rename to grp_vdi_create.sh index 48d98ad..9dc46fe --- a/grp_vdi.sh +++ b/grp_vdi_create.sh @@ -31,20 +31,17 @@ get_group_users() { fi } -# Verwenden Sie die Funktion, indem Sie den Gruppennamen als Argument übergeben -get_group_users "$VAR_GROUP" - # %--------------------end/Funktionen--------------------% echo "User / Passwort: $VAR_USER/Start1234" echo "Welches VDI-OS soll installiert werden" echo -echo "Für wenn soll es sein?" +echo "Für wen soll es sein?" echo COLUMNS=10 PS3="Ihre Auswahl: " -options=("Aktueller Benutzer" "Anderer Benutzer" "Mitglieder der Gruppe" "Beenden") +options=("Aktueller Benutzer" "Anderer Benutzer" "Mitglieder einer Gruppe" "Beenden") select opt in "${options[@]}" do case $opt in @@ -52,16 +49,24 @@ do VAR_USER=$(whoami) ;; "Anderer Benutzer") - read -p "Bitte geben Sie einen Benutzernamen ein: " VAR_USER - if grep -q "^$VAR_USER:" /etc/passwd; then - echo "Der Benutzer $VAR_USER existiert auf diesem System." - else - echo "Der Benutzer $VAR_USER existiert nicht auf diesem System." - exit 1 - fi + read -p "Bitte geben Sie einen Benutzernamen ein: " VAR_USER + if grep -q "^$VAR_USER:" /etc/passwd; then + echo "Der Benutzer $VAR_USER existiert auf diesem System." + else + echo "Der Benutzer $VAR_USER existiert nicht auf diesem System." + exit 1 + fi ;; - "Mitglieder der Gruppe") - read -p "Bitte den Gruppennamen eingeben: " VAR_GRUPPE + "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" + GROUP_MEMBERS=($(get_group_users "$VAR_GROUP")) + else + echo "Die Gruppe $VAR_GROUP existiert nicht auf diesem System." + exit 1 + fi ;; "Beenden") exit @@ -100,28 +105,27 @@ do # Variablen VAR_PATH_TO_VDI="/srv/data/VDI" - VAR_VBOX_DIR="/srv/vbox/$VAR_USER" VAR_VIDEO_RAM=64 VAR_RDP_PORT=339 VAR_NIC1="Nat" VAR_NIC2="bridged" VAR_NET_INTERFACE="enp4s0f1" - # Schleife zur Erzeugung der VMs - for VAR_N in $(seq 1 $VAR_QUANTITY) + # Schleife zur Erzeugung der VMs für jeden Benutzer in der Gruppe + for VAR_USER_IN_GROUP in "${GROUP_MEMBERS[@]}" do # VM erstellen - sudo -u $VAR_USER VBoxManage createvm \ - --name "${VAR_NAME_PREFIX}-${VAR_N}" \ + sudo -u "$VAR_USER_IN_GROUP" VBoxManage createvm \ + --name "${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}" \ --ostype "$VAR_OS" \ --register \ - --basefolder "$VAR_VBOX_DIR" + --basefolder "/srv/vbox/$VAR_USER_IN_GROUP" # VM-Konfigurieren - sudo -u $VAR_USER VBoxManage modifyvm "${VAR_NAME_PREFIX}-${VAR_N}" \ + sudo -u "$VAR_USER_IN_GROUP" VBoxManage modifyvm "${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}" \ --ioapic on \ --memory "$VAR_MEM" \ - --cpus="$VAR_CPU" \ + --cpus "$VAR_CPU" \ --vram "$VAR_VIDEO_RAM" \ --nic1 "$VAR_NIC1" \ --graphicscontroller vmsvga \ @@ -129,17 +133,17 @@ do --bridgeadapter2 "$VAR_NET_INTERFACE" \ --vrde on \ --vrdemulticon on \ - --vrdeport "$VAR_RDP_PORT${VAR_N}" + --vrdeport "$VAR_RDP_PORT" # Festplattencontroller hinzufügen - sudo -u $VAR_USER VBoxManage storagectl "${VAR_NAME_PREFIX}-${VAR_N}" \ + sudo -u "$VAR_USER_IN_GROUP" VBoxManage storagectl "${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}" \ --name "SATA Controller" \ --add sata \ --controller IntelAhci # Klonen der Festplatte (in Hintergrundprozessen) { - sudo -u $VAR_USER VBoxManage clonehd "${VAR_PATH_TO_VDI}/${VAR_VDI}" "${VAR_VBOX_DIR}/${VAR_NAME_PREFIX}-${VAR_N}/${VAR_NAME_PREFIX}-${VAR_N}-disk0.vdi" + sudo -u "$VAR_USER_IN_GROUP" VBoxManage clonehd "${VAR_PATH_TO_VDI}/${VAR_VDI}" "/srv/vbox/$VAR_USER_IN_GROUP/${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}/${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}-disk0.vdi" } & done @@ -147,18 +151,18 @@ do wait # Anhängen der geklonten Festplatte - for VAR_N in $(seq 1 $VAR_QUANTITY) + for VAR_USER_IN_GROUP in "${GROUP_MEMBERS[@]}" do - sudo -u $VAR_USER VBoxManage storageattach "${VAR_NAME_PREFIX}-${VAR_N}" \ + sudo -u "$VAR_USER_IN_GROUP" VBoxManage storageattach "${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}" \ --storagectl "SATA Controller" \ --port 0 \ --device 0 \ --type hdd \ - --medium "${VAR_VBOX_DIR}/${VAR_NAME_PREFIX}-${VAR_N}/${VAR_NAME_PREFIX}-${VAR_N}-disk0.vdi" + --medium "/srv/vbox/$VAR_USER_IN_GROUP/${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}/${VAR_NAME_PREFIX}-${VAR_USER_IN_GROUP}-disk0.vdi" done # Schleife beenden break done -echo "VMs wurden erstellt und Festplatten geklont." +echo "VMs wurden für alle Mitglieder der Gruppe erstellt und Festplatten geklont." diff --git a/neu_vdi_create.sh b/user_vdi_create.sh similarity index 100% rename from neu_vdi_create.sh rename to user_vdi_create.sh diff --git a/vbox_neu_create.sh b/vbox_neu_create.sh deleted file mode 100644 index e69de29..0000000