.
This commit is contained in:
42
vbox_manage_0.sh
Normal file
42
vbox_manage_0.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Basisordner mit VMs, z.B. /srv/vbox_storage oder /home/*/VirtualBox VMs
|
||||
# Passe den Pfad hier an deine Umgebung an:
|
||||
BASE_DIRS=("/srv/vbox_storage" "/home")
|
||||
|
||||
echo "Starte systemweiten Cleanup nicht registrierter VMs..."
|
||||
|
||||
# Alle registrierten VM-Namen erfassen (mit UUID)
|
||||
mapfile -t registered_vms < <(VBoxManage list vms | awk '{print $1}' | tr -d '"')
|
||||
|
||||
# Hilfsfunktion: Prüfen ob ein Name in registrierten VMs 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 rekursiv, z.B. Ordner, die eine *.vbox Datei enthalten
|
||||
find "$base_dir" -type f -name "*.vbox" | 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."
|
||||
|
||||
Reference in New Issue
Block a user