73 lines
1.8 KiB
Bash
Executable File
73 lines
1.8 KiB
Bash
Executable File
#!/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
|
|
|