Netzwerk loeschen Funktion hinzugefügt (nur unbenutzte Netzwerke)

This commit is contained in:
2026-03-22 11:36:43 +01:00
parent f03673ec75
commit bba8deffc7

View File

@@ -15,9 +15,9 @@
# Autor: Patrick Asmus # Autor: Patrick Asmus
# Web: https://www.cleveradmin.de # Web: https://www.cleveradmin.de
# Git-Reposit.: https://git.techniverse.net/scriptos/dockernet-inspector.git # Git-Reposit.: https://git.techniverse.net/scriptos/dockernet-inspector.git
# Version: 1.3.0 # Version: 1.4.0
# Datum: 22.02.2026 # Datum: 22.03.2026
# Modifikation: Ineraktives Menü hinzugefügt, Fehlerbehandlung verbessert, Ausgabe formatiert, Kompatibilität erweitert # Modifikation: Netzwerk loeschen Funktion hinzugefügt (nur unbenutzte Netzwerke)
##################################################### #####################################################
set -uo pipefail set -uo pipefail
@@ -157,6 +157,54 @@ list_ips_all_networks() {
print_dynamic_table "$table_data" print_dynamic_table "$table_data"
} }
# Funktion zum Loeschen eines unbenutzten Netzwerks
delete_network() {
local nets net container_count
nets="$(docker network ls --format '{{.Name}}' 2>/dev/null || true)"
if [[ -z "$nets" ]]; then
echo "Fehler: Keine Docker Netzwerke gefunden."
return 1
fi
echo "Verfuegbare Netzwerke:"
select net in $nets; do
if [[ -n "$net" ]]; then
# Standardnetzwerke schuetzen
if [[ "$net" == "bridge" || "$net" == "host" || "$net" == "none" ]]; then
echo "FEHLER: Das Standard-Netzwerk '$net' kann nicht geloescht werden."
return 1
fi
# Pruefen ob Container das Netzwerk verwenden
container_count="$(docker network inspect "$net" --format '{{len .Containers}}' 2>/dev/null || echo 0)"
if [[ "$container_count" -gt 0 ]]; then
echo "FEHLER: Das Netzwerk '$net' wird aktuell von $container_count Container(n) verwendet und kann nicht geloescht werden."
echo ""
echo "Verbundene Container:"
docker network inspect "$net" --format '{{range $id, $c := .Containers}} - {{$c.Name}} ({{$c.IPv4Address}}){{println}}{{end}}' 2>/dev/null
return 1
fi
# Sicherheitsabfrage
read -p "Soll das Netzwerk '$net' wirklich geloescht werden? (j/N): " confirm
if [[ "$confirm" == "j" || "$confirm" == "J" ]]; then
if docker network rm "$net" >/dev/null 2>&1; then
echo "Netzwerk '$net' wurde erfolgreich geloescht."
else
echo "FEHLER: Netzwerk '$net' konnte nicht geloescht werden."
return 1
fi
else
echo "Loeschvorgang abgebrochen."
fi
return 0
else
echo "Ungueltige Auswahl. Bitte versuchen Sie es erneut."
fi
done
}
# Interaktive Menü-Funktion # Interaktive Menü-Funktion
interactive_menu() { interactive_menu() {
while true; do while true; do
@@ -169,9 +217,10 @@ interactive_menu() {
echo "2. Detaillierte Infos zu einem Netzwerk" echo "2. Detaillierte Infos zu einem Netzwerk"
echo "3. IPs eines Netzwerks anzeigen" echo "3. IPs eines Netzwerks anzeigen"
echo "4. Alle belegten IPs anzeigen" echo "4. Alle belegten IPs anzeigen"
echo "5. Netzwerk loeschen"
echo "0. Beenden" echo "0. Beenden"
echo "" echo ""
read -p "Bitte waehlen Sie eine Option (0-4): " choice read -p "Bitte waehlen Sie eine Option (0-5): " choice
echo "" echo ""
case "$choice" in case "$choice" in
@@ -203,12 +252,15 @@ interactive_menu() {
4) 4)
list_ips_all_networks list_ips_all_networks
;; ;;
5)
delete_network
;;
0) 0)
echo "Auf Wiedersehen!" echo "Auf Wiedersehen!"
exit 0 exit 0
;; ;;
*) *)
echo "FEHLER: Ungueltige Eingabe '$choice'. Bitte geben Sie eine Nummer zwischen 0 und 4 ein." echo "FEHLER: Ungueltige Eingabe '$choice'. Bitte geben Sie eine Nummer zwischen 0 und 5 ein."
sleep 1 sleep 1
;; ;;
esac esac