#!/bin/bash # vbox_manage.sh # Kombi-Skript für Clean + Create mit Abfrage # Autor: Branislav Zeljak + Anpassung ChatGPT # Hinweis: Pfade ggf. anpassen! clear # Basisordner, wo VM-Ordner gesucht werden (z.B. zentrale Storage und User-Heimverzeichnisse) BASE_DIRS=("/srv/vbox_storage" "/home") function clean_unregistered_vms() { echo "Starte Cleanup aller nicht registrierten VMs..." # Alle registrierten VM-Namen erfassen mapfile -t registered_vms < <(VBoxManage list vms | awk '{print $1}' | tr -d '"') # Hilfsfunktion zur Prüfung, ob VM registriert ist is_registered_vm() { local vmname="$1" for regvm in "${registered_vms[@]}"; do if [[ "$regvm" == "$vmname" ]]; then return 0 fi done return 1 } for base_dir in "${BASE_DIRS[@]}"; do if [[ ! -d "$base_dir" ]]; then continue fi # Suche VM-Ordner über .vbox Dateien find "$base_dir" -type f -name "*.vbox" 2>/dev/null | while read -r vbox_file; do vm_folder=$(dirname "$vbox_file") vm_name=$(basename "$vbox_file" .vbox) if ! is_registered_vm "$vm_name"; then echo "Nicht registrierte VM gefunden: $vm_name" echo "Lösche Ordner: $vm_folder" sudo rm -rf "$vm_folder" fi done done echo "Cleanup abgeschlossen." } function main() { clean_unregistered_vms read -rp "Cleanup ist fertig. Soll mit der VM-Erstellung fortgefahren werden? (j/n): " answer case "$answer" in [jJ]* ) # Pfad zu deinem VM-Erstellungsskript (hier anpassen falls nötig) if [[ -x "./vbox_create.sh" ]]; then ./vbox_create.sh else echo "Fehler: VM-Erstellungsskript ./vbox_create.sh nicht gefunden oder nicht ausführbar." exit 1 fi ;; * ) echo "Abbruch. Es wird keine VM erstellt." exit 0 ;; esac } main