From 22feb031b2f70d5c49308b1ad8d3c37b9a808c1d Mon Sep 17 00:00:00 2001 From: braniz Date: Sun, 1 Oct 2023 12:59:49 +0200 Subject: [PATCH] Anpassungen an vbox_create --- chat_user.sh | 49 +++++++ user.sh => code_snippet/auswahl_user.sh | 0 code_snippet/chat_user.sh | 43 ++++++ id.sh => code_snippet/id.sh | 0 name.sh => code_snippet/name.sh | 0 code_snippet/vbox_os_auswahl.sh | 47 +++++++ chat.sh => code_snippet/vbox_sudo.sh | 0 code_snippet/vbox_zufall_name.sh | 164 ++++++++++++++++++++++ code_snippet/zufall_name.sh | 55 ++++++++ user_dell.sh | 28 ---- user_group_add.sh | 51 ------- useradd.sh | 48 ------- useradd_neu.sh | 51 ------- vbox_create.sh | 78 +++++------ vbox_create_zufall.sh | 172 ++++++++++++++++++++++++ vdi_create.sh | 4 +- 16 files changed, 563 insertions(+), 227 deletions(-) create mode 100644 chat_user.sh rename user.sh => code_snippet/auswahl_user.sh (100%) create mode 100644 code_snippet/chat_user.sh rename id.sh => code_snippet/id.sh (100%) rename name.sh => code_snippet/name.sh (100%) create mode 100644 code_snippet/vbox_os_auswahl.sh rename chat.sh => code_snippet/vbox_sudo.sh (100%) create mode 100755 code_snippet/vbox_zufall_name.sh create mode 100644 code_snippet/zufall_name.sh delete mode 100644 user_dell.sh delete mode 100644 user_group_add.sh delete mode 100644 useradd.sh delete mode 100644 useradd_neu.sh create mode 100755 vbox_create_zufall.sh diff --git a/chat_user.sh b/chat_user.sh new file mode 100644 index 0000000..e9fe346 --- /dev/null +++ b/chat_user.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +clear + +# Funktion zum Benutzer erstellen +create_user() { + local username="$1" + local password="$2" + local groups="$3" + + # Benutzer erstellen mit Passwort + sudo useradd -m "$username" -G "$groups" + echo "$username:$password" | sudo chpasswd +} + +# Anzahl der zu erstellenden Benutzer abfragen +read -p "Geben Sie die Anzahl der zu erstellenden Benutzer an: " num_users + +# Überprüfen, ob die Eingabe eine positive ganze Zahl ist +if ! [[ "$num_users" =~ ^[1-9][0-9]*$ ]]; then + echo "Ungültige Eingabe. Bitte geben Sie eine positive ganze Zahl ein." + exit 1 +fi + +# Benutzername für alle Benutzer festlegen +read -p "Geben Sie den gemeinsamen Benutzernamen für alle Benutzer ein: " common_username + +# Passwort für alle Benutzer festlegen +read -s -p "Geben Sie das gemeinsame Passwort für alle Benutzer ein: " common_password +echo # Neue Zeile für die Eingabeaufforderung + +# Abfrage, ob die Benutzer zusätzliche Gruppen erhalten sollen +read -p "Möchten Sie zusätzliche Gruppen für alle Benutzer hinzufügen? (j/n): " add_groups + +groups="" +if [[ "$add_groups" == "j" ]]; then + read -p "Geben Sie die zusätzlichen Gruppen für alle Benutzer (kommagetrennt) ein: " groups +fi + +# Schleife zur Erstellung der Benutzer +for ((i = 1; i <= num_users; i++)); do + username="${common_username}$(printf "%02d" "$i")" + + create_user "$username" "$common_password" "$groups" + echo "Benutzer $username wurde erstellt." +done + +echo "Die Benutzer wurden erfolgreich erstellt." + diff --git a/user.sh b/code_snippet/auswahl_user.sh similarity index 100% rename from user.sh rename to code_snippet/auswahl_user.sh diff --git a/code_snippet/chat_user.sh b/code_snippet/chat_user.sh new file mode 100644 index 0000000..dc2e9dd --- /dev/null +++ b/code_snippet/chat_user.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +clear + +# Funktion zum Benutzer erstellen +create_user() { + local username="$1" + local password="$2" + local groups="$3" + + # Benutzer erstellen mit Passwort + sudo useradd -m "$username" -G "$groups" + echo "$username:$password" | sudo chpasswd +} + +# Anzahl der zu erstellenden Benutzer abfragen +read -p "Geben Sie die Anzahl der zu erstellenden Benutzer an: " num_users + +# Überprüfen, ob die Eingabe eine positive ganze Zahl ist +if ! [[ "$num_users" =~ ^[1-9][0-9]*$ ]]; then + echo "Ungültige Eingabe. Bitte geben Sie eine positive ganze Zahl ein." + exit 1 +fi + +# Schleife zur Erstellung der Benutzer +for ((i = 1; i <= num_users; i++)); do + read -p "Geben Sie den Benutzernamen für Benutzer $i ein: " username + read -s -p "Geben Sie das Passwort für Benutzer $username ein: " password + echo # Neue Zeile für die Eingabeaufforderung + + read -p "Möchten Sie zusätzliche Gruppen für Benutzer $username hinzufügen? (j/n): " add_groups + + groups="" + if [[ "$add_groups" == "j" ]]; then + read -p "Geben Sie die zusätzlichen Gruppen für Benutzer $username (kommagetrennt) ein: " groups + fi + + create_user "$username" "$password" "$groups" + echo "Benutzer $username wurde erstellt." +done + +echo "Die Benutzer wurden erfolgreich erstellt." + diff --git a/id.sh b/code_snippet/id.sh similarity index 100% rename from id.sh rename to code_snippet/id.sh diff --git a/name.sh b/code_snippet/name.sh similarity index 100% rename from name.sh rename to code_snippet/name.sh diff --git a/code_snippet/vbox_os_auswahl.sh b/code_snippet/vbox_os_auswahl.sh new file mode 100644 index 0000000..1f42688 --- /dev/null +++ b/code_snippet/vbox_os_auswahl.sh @@ -0,0 +1,47 @@ +#options=("Ubuntu LTS SRV" "Ubuntu LTS GUI" "Debian" "RHEL" "Fedora" "kali-linux" "linuxmint" "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" +# ;; +# "Ubuntu LTS GUI") +# VAR_OS="Ubuntu_64" +# VAR_ISO="ubuntu-*-desktop-amd64.iso" +# ;; +# "Debian") +# VAR_OS="Debian_64" +# VAR_ISO="debian-*.iso" +# ;; +# "RHEL") +# VAR_OS="Linux_64" +# VAR_ISO="rhel-*.iso" +# ;; +# "Fedora") +# VAR_OS="Linux_64" +# VAR_ISO="Fedora-*.iso" +# ;; +# "kali-linux") +# VAR_OS="Linux_64" +# VAR_ISO="kali-linux-*.iso" +# ;; +# "linuxmint") +# VAR_OS="Linux_64" +# VAR_ISO="linuxmint-*.iso" +# ;; +# "openSuse") +# VAR_OS="Linux_64" +# VAR_ISO="openSUSE-*.iso" +# ;; +# "Manjaro") +# VAR_OS="Linux_64" +# VAR_ISO="manjaro-xfce-*.iso" +# ;; +# "Quit") +# exit +# ;; +# *) +# echo "invalid option $REPLY" +# ;; +# esac \ No newline at end of file diff --git a/chat.sh b/code_snippet/vbox_sudo.sh similarity index 100% rename from chat.sh rename to code_snippet/vbox_sudo.sh diff --git a/code_snippet/vbox_zufall_name.sh b/code_snippet/vbox_zufall_name.sh new file mode 100755 index 0000000..001dd0f --- /dev/null +++ b/code_snippet/vbox_zufall_name.sh @@ -0,0 +1,164 @@ +#!/bin/bash + +clear + +# Funktion zum Überprüfen der Benutzerexistenz +check_user_existence() { + local user_name="$1" + if ! grep -q "^$user_name:" /etc/passwd; then + echo "Der Benutzer $user_name existiert nicht auf diesem System." + exit 1 + fi +} + +# Funktion, um einen zufälligen Host-Namen aus der Liste auszuwählen +get_random_name() { + # Liste der Namen in Kleinbuchstaben + 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" "fíli" "kíli" "dori" "frodo") + + # Zufälligen Index auswählen + local random_index=$((RANDOM % ${#names[@]})) + + echo "${names[random_index]}" +} + +# Funktion zum Erzeugen der VirtualBox-VMs und Zuweisen von Festplatten +create_vms_and_attach_hdds() { + local VAR_USER="$1" + local VAR_HOST="$2" + local VAR_OS="$3" + local VAR_HDD="$4" + local VAR_QUAN="$5" + + for N in $(seq 1 "$VAR_QUAN"); do + ORDER_NUM=$(printf "%02d" "$N") + + # VM erstellen + sudo -u "$VAR_USER" VBoxManage createvm \ + --name "${VAR_HOST}-${ORDER_NUM}" \ + --ostype "$VAR_OS" \ + --register + + # VM konfigurieren + sudo -u "$VAR_USER" VBoxManage modifyvm "${VAR_HOST}-${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 VBoxManage storagectl ${VAR_HOST}-${ORDER_NUM} \ + --name "SATA Controller" \ + --add sata \ + --controller IntelAhci + + # HDDs erzeugen und zuweisen + for j in $(seq 1 "$VAR_HDD"); do + HDD_NUM=$(printf "%02d" "$j") + + sudo -u "$VAR_USER" VBoxManage createhd \ + --filename "${VAR_VB}/${VAR_HOST}-${ORDER_NUM}/${VAR_HOST}-${ORDER_NUM}_DISK${HDD_NUM}.vdi" \ + --size 102400 \ + --format VDI + + sudo -u "$VAR_USER" VBoxManage storageattach "${VAR_HOST}-${ORDER_NUM}" \ + --storagectl "SATA Controller" \ + --port "$j" \ + --device 0 \ + --type hdd \ + --medium "${VAR_VB}/${VAR_HOST}-${ORDER_NUM}/${VAR_HOST}-${ORDER_NUM}_DISK${HDD_NUM}.vdi" + done + done +} + +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) + ;; + "Anderer Benutzer") + read -p "Bitte geben Sie einen Benutzernamen ein: " user_name + check_user_existence "$user_name" + VAR_USER="$user_name" + ;; + "Beenden") + exit + ;; + esac + break +done + +# Variable für den User +VAR_VB="/srv/vbox/${VAR_USER}" + +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"]="Linux_64 rhel-*.iso" + ["Fedora"]="Linux_64 Fedora-*.iso" + ["kali-linux"]="Linux_64 kali-linux-*.iso" + ["linuxmint"]="Linux_64 linuxmint-*.iso" + ["openSuse"]="Linux_64 openSUSE-*.iso" + ["Manjaro"]="Linux_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_HOST + read -p "CPUs (Standard: 1 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:-1} + 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_QUAN=1 + VAR_HDD=1 + VAR_HOST=${VAR_HOST:-$default_name} + + create_vms_and_attach_hdds "$VAR_USER" "$VAR_HOST" "$VAR_OS" "$VAR_HDD" "$VAR_QUAN" + break +done diff --git a/code_snippet/zufall_name.sh b/code_snippet/zufall_name.sh new file mode 100644 index 0000000..327ef95 --- /dev/null +++ b/code_snippet/zufall_name.sh @@ -0,0 +1,55 @@ +# Hier sind die gleichen Vornamen aus "Herr der Ringe", aber in Kleinbuchstaben: +# +# 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 +# fíli +# kíli +# dori +# frodo + +#!/bin/bash + +# Funktion, um einen zufälligen Namen aus der Liste auszuwählen +get_random_name() { + # Liste der Namen in Kleinbuchstaben + 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" "fíli" "kíli" "dori" "frodo") + + # Zufälligen Index auswählen + local random_index=$((RANDOM % ${#names[@]})) + + # Zufälligen Namen auswählen und zurückgeben + echo "${names[random_index]}" +} + +# Verwenden der Funktion, um einen zufälligen VM-Namen zu generieren +random_vm_name=$(get_random_name) + +# VirtualBox-Befehle hier einfügen, um eine VM mit dem zufälligen Namen zu erstellen +# Zum Beispiel: VBoxManage createvm --name "$random_vm_name" ... + +# Ausgabe des zufälligen VM-Namens +echo "Der zufällig generierte VM-Name ist: $random_vm_name" diff --git a/user_dell.sh b/user_dell.sh deleted file mode 100644 index 7391aa6..0000000 --- a/user_dell.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -# Nach dem Präfix für die zu löschenden Benutzer fragen -read -p "Geben Sie das Präfix der zu löschenden Benutzer ein: " user_prefix - -# Überprüfen, ob das Präfix eingegeben wurde -if [ -z "$user_prefix" ]; then - echo "Das Präfix darf nicht leer sein. Das Skript wird beendet." - exit 1 -fi - -# Schleife zur Löschung der Benutzer -deleted_users=0 - -for username in $(awk -F':' -v prefix="$user_prefix" '$1 ~ "^" prefix {print $1}' /etc/passwd) -do - # Benutzer löschen - sudo userdel -r "$username" - echo "Der Benutzer '$username' wurde gelöscht." - ((deleted_users++)) -done - -# Ausgabe der Anzahl gelöschter Benutzer -if [ "$deleted_users" -eq 0 ]; then - echo "Keine Benutzer mit dem Präfix '$user_prefix' gefunden und gelöscht." -else - echo "Insgesamt $deleted_users Benutzer mit dem Präfix '$user_prefix' gefunden und gelöscht." -fi diff --git a/user_group_add.sh b/user_group_add.sh deleted file mode 100644 index 8c26f12..0000000 --- a/user_group_add.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -clear -echo "Erstellen von Usern" -echo - -# Nach der Anzahl der Benutzer fragen -read -p "Geben Sie die Anzahl der Benutzer ein: " num_users - -# Nach dem Basisnamen für die Benutzer fragen -read -p "Geben Sie den Basisnamen für die Benutzer ein: " base_username - -read -p "Geben Sie den Gruppennamen für die Benutzer ein oder drücken Sie Enter, um den Basisnamen zu verwenden: " group_name -if [ -z "$group_name" ]; then - group_name="$base_username" -fi - -# Überprüfen, ob die Gruppe bereits existiert, andernfalls erstellen -if ! grep -q "^$group_name:" /etc/group; then - sudo groupadd "$group_name" - echo "Die Gruppe '$group_name' wurde erstellt." -fi - -# Start-UID und GID festlegen -start_uid=8001 # Start-UID über 8000 -start_gid=8001 # Start-GID über 8000 - -# Schleife zur Erstellung der Benutzer -for ((i=1; i<=num_users; i++)) -do - # Benutzername mit zweistelliger Nummer erstellen - username="${base_username}$(printf "%02d" $i)" - - # Überprüfen, ob der Benutzer bereits existiert - if id "$username" &>/dev/null; then - echo "Der Benutzer '$username' existiert bereits." - else - # Benutzer erstellen und zur angegebenen Gruppe hinzufügen - sudo useradd -m -u "$start_uid" -g "$group_name" "$username" - echo "Der Benutzer '$username' wurde erstellt und der Gruppe '$group_name' hinzugefügt." - - # Passwort für den Benutzer festlegen (Hier wird das Passwort auf "password" festgelegt, ändern Sie es nach Bedarf) - echo -e "password\npassword" | sudo passwd "$username" - echo "Das Passwort für den Benutzer '$username' wurde festgelegt." - - # Inkrementieren der UID für den nächsten Benutzer - ((start_uid++)) - fi -done - -echo "Die Benutzer wurden erstellt und Passwörter festgelegt." diff --git a/useradd.sh b/useradd.sh deleted file mode 100644 index 6301926..0000000 --- a/useradd.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash - -clear -echo "Erstellen von Usern" -echo - -# Nach der Anzahl der Benutzer fragen -read -p "Geben Sie die Anzahl der Benutzer ein: " num_users - -# Nach dem Basisnamen für die Benutzer fragen -read -p "Geben Sie den Basisnamen für die Benutzer ein: " base_username - -# Nach der Gruppe fragen oder den Basisnamen als Gruppe verwenden, wenn keine Gruppe angegeben ist -read -p "Geben Sie den Gruppennamen für die Benutzer ein oder drücken Sie Enter, um den Basisnamen zu verwenden: " group_name -if [ -z "$group_name" ]; then - group_name="$base_username" -fi - -# Stellen Sie sicher, dass die UID und GID über 8000 liegen -start_uid=8001 # Starten Sie die UID bei 8001 -start_gid=8001 # Starten Sie die GID bei 8001 - -# Schleife zur Erstellung der Benutzer -for ((i=1; i<=num_users; i++)) -do - # Benutzername mit zweistelliger Nummer erstellen - username="${base_username}$(printf "%02d" $i)" - - # Überprüfen, ob der Benutzer bereits existiert - if id "$username" &>/dev/null; then - echo "Der Benutzer '$username' existiert bereits." - else - # Benutzer erstellen und zur angegebenen Gruppe hinzufügen, dabei die UID und GID festlegen - sudo groupadd -g "$start_gid" "$group_name" - sudo useradd -m -u "$start_uid" -g "$group_name" "$username" - echo "Der Benutzer '$username' wurde erstellt und der Gruppe '$group_name' mit UID $start_uid und GID $start_gid hinzugefügt." - - # Passwort für den Benutzer festlegen (Hier wird das Passwort auf "password" festgelegt, ändern Sie es nach Bedarf) - echo -e "password\npassword" | sudo passwd "$username" - echo "Das Passwort für den Benutzer '$username' wurde festgelegt." - - # Erhöhen Sie die UID und GID für den nächsten Benutzer - ((start_uid++)) - ((start_gid++)) - fi -done - -echo "Die Benutzer wurden erstellt und Passwörter festgelegt." diff --git a/useradd_neu.sh b/useradd_neu.sh deleted file mode 100644 index ea32f8d..0000000 --- a/useradd_neu.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -# Funktion zur Ermittlung der nächsten verfügbaren UID oder GID oberhalb von 8000 -get_next_id() { - local id_type="$1" - local current_max_id="$2" - local min_id=8001 - - if [ -z "$current_max_id" ]; then - echo "$min_id" - else - local next_id=$((current_max_id + 1)) - if [ "$next_id" -lt "$min_id" ]; then - next_id="$min_id" - fi - echo "$next_id" - fi -} - -# Nach dem Präfix für Benutzer und Gruppen fragen -read -p "Geben Sie das Präfix für Benutzer und Gruppen ein: " prefix - -# Nach der Anzahl der zu erstellenden Benutzer fragen -read -p "Geben Sie die Anzahl der zu erstellenden Benutzer ein: " num_users - -# Die aktuell größte vorhandene UID und GID ermitteln -current_max_uid=$(getent passwd | awk -F':' '$3 >= 8000 {print $3}' | sort -n | tail -1) -current_max_gid=$(getent group | awk -F':' '$3 >= 8000 {print $3}' | sort -n | tail -1) - -echo "Aktuell größte vorhandene UID: $current_max_uid" -echo "Aktuell größte vorhandene GID: $current_max_gid" - -# Benutzer und Gruppen erstellen -for ((i=1; i<=num_users; i++)) -do - # Benutzername mit zweistelliger Nummer erstellen - username="${prefix}$(printf "%02d" $i)" - groupname="${prefix}$(printf "%02d" $i)" - - # Nächste verfügbare UID und GID ermitteln - next_uid=$(get_next_id "UID" "$current_max_uid") - next_gid=$(get_next_id "GID" "$current_max_gid") - - # Benutzer und Gruppe erstellen - sudo groupadd -g "$next_gid" "$groupname" - sudo useradd -m -u "$next_uid" -g "$groupname" "$username" - - echo "Benutzer '$username' mit UID $next_uid und Gruppe '$groupname' mit GID $next_gid wurde erstellt." -done - -echo "Die Benutzer und Gruppen wurden erstellt." diff --git a/vbox_create.sh b/vbox_create.sh index 6960c58..63ece37 100755 --- a/vbox_create.sh +++ b/vbox_create.sh @@ -21,11 +21,11 @@ do VAR_USER=$(whoami) ;; "Anderer Benutzer") - read -p "Bitte geben Sie einen Benutzernamen ein: " user_name - if grep -q "^$user_name:" /etc/passwd; then - echo "Der Benutzer $user_name existiert auf diesem System." + 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 $user_name existiert nicht auf diesem System." + echo "Der Benutzer $VAR_USER existiert nicht auf diesem System." exit 1 fi ;; @@ -44,52 +44,36 @@ 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" "linuxmint" "openSuse" "Manjaro" "Quit") -select opt in "${options[@]}" + +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"]="Linux_64 rhel-*.iso" + ["Fedora"]="Linux_64 Fedora-*.iso" + ["kali-linux"]="Linux_64 kali-linux-*.iso" + ["linuxmint"]="Linux_64 linuxmint-*.iso" + ["openSuse"]="Linux_64 openSUSE-*.iso" + ["Manjaro"]="Linux_64 manjaro-xfce-*.iso" + ["Quit"]="Quit" +) + +select opt in "${!OS_MAP[@]}" do case $opt in - "Ubuntu LTS SRV") - VAR_OS="Ubuntu_64" - VAR_ISO="ubuntu-*-live-server-amd64.iso" + "Quit") + exit ;; - "Ubuntu LTS GUI") - VAR_OS="Ubuntu_64" - VAR_ISO="ubuntu-*-desktop-amd64.iso" + *) + VAR_OS="${OS_MAP[$opt]%% *}" # Extrahiere den ersten Teil (Betriebssystem) + VAR_ISO="${OS_MAP[$opt]#* }" # Extrahiere den zweiten Teil (ISO-Muster) ;; - "Debian") - VAR_OS="Debian_64" - VAR_ISO="debian-*.iso" - ;; - "RHEL") - VAR_OS="Linux_64" - VAR_ISO="rhel-*.iso" - ;; - "Fedora") - VAR_OS="Linux_64" - VAR_ISO="Fedora-*.iso" - ;; - "kali-linux") - VAR_OS="Linux_64" - VAR_ISO="kali-linux-*.iso" - ;; - "linuxmint") - VAR_OS="Linux_64" - VAR_ISO="linuxmint-*.iso" - ;; - "openSuse") - VAR_OS="Linux_64" - VAR_ISO="openSUSE-*.iso" - ;; - "Manjaro") - VAR_OS="Linux_64" - VAR_ISO="manjaro-xfce-*.iso" - ;; - "Quit") - exit - ;; - *) - echo "invalid option $REPLY" - ;; esac # Benutzereingabe für VM-Konfiguration @@ -159,4 +143,4 @@ ORDER_NUM=$(printf "%02d" $N) # Zweistellige Ordnungszahl generieren done break done - \ No newline at end of file + diff --git a/vbox_create_zufall.sh b/vbox_create_zufall.sh new file mode 100755 index 0000000..dddc0b3 --- /dev/null +++ b/vbox_create_zufall.sh @@ -0,0 +1,172 @@ +#!/bin/bash +# +# @Branislav Zeljak v0.1 +# +# Create VBox + +clear + +# Vorgabe für Variablen +VAR_USER=$(whoami) +VAR_PATH="/srv/data/ISO/" + +# Funktion zum Überprüfen der Benutzerexistenz +check_user_existence() { + local $VAR_USER="$1" + if ! grep -q "^$user_name:" /etc/passwd; then + echo "Der Benutzer $VAR_USER existiert nicht auf diesem System." + exit 1 + fi +} + +# Funktion, um einen zufälligen Host-Namen aus der Liste auszuwählen +get_random_name() { + # Liste der Namen in Kleinbuchstaben + 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" "fíli" "kíli" "dori" "frodo") + + # Zufälligen Index auswählen + local random_index=$((RANDOM % ${#names[@]})) + + echo "${names[random_index]}" +} + +# %------------------------------------------------------------------------% + +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) + ;; + "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 + ;; + "Beenden") + exit + ;; + esac + break +done + +# Variable für den User +VAR_VB="/srv/vbox/${VAR_USER}" + +clear +echo "Welches Betriebssystem soll installiert werden?" +echo +COLUMNS=10 +PS3="Bitte Ihre Auswahl eingeben: " + +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"]="Linux_64 rhel-*.iso" + ["Fedora"]="Linux_64 Fedora-*.iso" + ["kali-linux"]="Linux_64 kali-linux-*.iso" + ["linuxmint"]="Linux_64 linuxmint-*.iso" + ["openSuse"]="Linux_64 openSUSE-*.iso" + ["Manjaro"]="Linux_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: 1 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:-1} +VAR_MEM=${VAR_MEM:-2048} +VAR_VID=64 +VAR_RDP=339 +VAR_NIC=bridged +VAR_NET=enp4s0f1 +VAR_NAME=${VAR_NAME:-$default_name} + +# Schliefe zur erzeugung der VMs +for N in $(seq 1 $VAR_QUAN) + +do + +ORDER_NUM=$(printf "%02d" $N) # Zweistellige Ordnungszahl generieren + sudo -u $VAR_USER VBoxManage createvm \ + --name ${VAR_NAME}-${ORDER_NUM} \ + --ostype ${VAR_OS} \ + --register \ + + sudo -u $VAR_USER 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 VBoxManage storagectl ${VAR_NAME}-${ORDER_NUM} \ + --name "SATA Controller" \ + --add sata \ + --controller IntelAhci + +# HDD erzeugen und zuweisen + for j in $(seq 1 ${VAR_HDD}) + do + HDD_NUM=$(printf "%02d" $j) + sudo -u $VAR_USER 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 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/vdi_create.sh b/vdi_create.sh index 05635b1..754ed03 100755 --- a/vdi_create.sh +++ b/vdi_create.sh @@ -5,8 +5,8 @@ # Create VBox user=$(whoami) clear -echo Usser / Passwort "user00/Start1234" -echo "Welches OS soll Installiert werden" +echo User / Passwort "user00/Start1234" +echo "Welches VDI-OS soll Installiert werden" echo COLUMNS=8 PS3='Please enter your choice: '