From bba8deffc7a1372783a360119c05df2a41ae791b Mon Sep 17 00:00:00 2001 From: "Patrick Asmus (scriptos)" Date: Sun, 22 Mar 2026 11:36:43 +0100 Subject: [PATCH] =?UTF-8?q?Netzwerk=20loeschen=20Funktion=20hinzugef=C3=BC?= =?UTF-8?q?gt=20(nur=20unbenutzte=20Netzwerke)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockernet-inspector.v1.sh | 62 +++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/dockernet-inspector.v1.sh b/dockernet-inspector.v1.sh index 0a162ec..0e5e0b4 100644 --- a/dockernet-inspector.v1.sh +++ b/dockernet-inspector.v1.sh @@ -15,9 +15,9 @@ # Autor: Patrick Asmus # Web: https://www.cleveradmin.de # Git-Reposit.: https://git.techniverse.net/scriptos/dockernet-inspector.git -# Version: 1.3.0 -# Datum: 22.02.2026 -# Modifikation: Ineraktives Menü hinzugefügt, Fehlerbehandlung verbessert, Ausgabe formatiert, Kompatibilität erweitert +# Version: 1.4.0 +# Datum: 22.03.2026 +# Modifikation: Netzwerk loeschen Funktion hinzugefügt (nur unbenutzte Netzwerke) ##################################################### set -uo pipefail @@ -157,6 +157,54 @@ list_ips_all_networks() { 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 interactive_menu() { while true; do @@ -169,9 +217,10 @@ interactive_menu() { echo "2. Detaillierte Infos zu einem Netzwerk" echo "3. IPs eines Netzwerks anzeigen" echo "4. Alle belegten IPs anzeigen" + echo "5. Netzwerk loeschen" echo "0. Beenden" echo "" - read -p "Bitte waehlen Sie eine Option (0-4): " choice + read -p "Bitte waehlen Sie eine Option (0-5): " choice echo "" case "$choice" in @@ -203,12 +252,15 @@ interactive_menu() { 4) list_ips_all_networks ;; + 5) + delete_network + ;; 0) echo "Auf Wiedersehen!" 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 ;; esac