52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Skript zum Löschen aller gestoppten LXCs auf dem lokalen Proxmox-Node
|
|
# Verwendet pct destroy und berücksichtigt nur den lokalen Node
|
|
|
|
# Überprüfen, ob das Skript als Root ausgeführt wird
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
echo "Dieses Skript muss als Root ausgeführt werden." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Überprüfen, ob pct verfügbar ist
|
|
if ! command -v pct &> /dev/null; then
|
|
echo "pct ist nicht installiert. Bitte installieren Sie es zuerst." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Alle gestoppten LXCs auf dem lokalen Node abrufen
|
|
echo "Suche nach gestoppten LXCs auf diesem Node..."
|
|
stopped_lxcs=$(pct list | awk '$2 == "stopped" {print $1}')
|
|
|
|
if [ -z "$stopped_lxcs" ]; then
|
|
echo "Keine gestoppten LXCs auf diesem Node gefunden."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Gefundene gestoppte LXCs auf diesem Node:"
|
|
echo "$stopped_lxcs" | while read -r lxc_id; do
|
|
lxc_name=$(pct config $lxc_id | grep '^hostname:' | awk '{print $2}')
|
|
echo " $lxc_id - $lxc_name"
|
|
done
|
|
|
|
# Bestätigung einholen
|
|
read -p "Möchten Sie diese LXCs wirklich löschen? (y/n): " confirm
|
|
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
|
|
echo "Löschvorgang abgebrochen."
|
|
exit 0
|
|
fi
|
|
|
|
# LXCs löschen
|
|
echo "Lösche gestoppte LXCs..."
|
|
for lxc_id in $stopped_lxcs; do
|
|
echo "Lösche LXC $lxc_id..."
|
|
pct destroy $lxc_id
|
|
if [ $? -eq 0 ]; then
|
|
echo "LXC $lxc_id erfolgreich gelöscht."
|
|
else
|
|
echo "Fehler beim Löschen von LXC $lxc_id." >&2
|
|
fi
|
|
done
|
|
|
|
echo "Vorgang abgeschlossen." |