This commit is contained in:
2025-08-24 17:01:55 +02:00
parent e4ba81c63d
commit fe5fe5b80d
5 changed files with 185 additions and 2 deletions

72
vbox_manage.sh Executable file
View File

@@ -0,0 +1,72 @@
#!/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