From 393cbc4926d904b147b03696e8205968da0afcff Mon Sep 17 00:00:00 2001 From: scriptos Date: Fri, 10 Apr 2026 12:25:27 +0200 Subject: [PATCH 1/2] docs: README minimiert, docs/-Ordner mit Schnellstart, Installation, Verwendung, Beispielen, Fehlerbehandlung und technischen Details angelegt --- README.md | 190 +---------------------------------------- docs/README.md | 13 +++ docs/error-handling.md | 19 +++++ docs/examples.md | 62 ++++++++++++++ docs/installation.md | 22 +++++ docs/technical.md | 17 ++++ docs/usage.md | 50 +++++++++++ 7 files changed, 185 insertions(+), 188 deletions(-) create mode 100644 docs/README.md create mode 100644 docs/error-handling.md create mode 100644 docs/examples.md create mode 100644 docs/installation.md create mode 100644 docs/technical.md create mode 100644 docs/usage.md diff --git a/README.md b/README.md index 569d900..6ddc7b5 100644 --- a/README.md +++ b/README.md @@ -2,202 +2,16 @@ Ein Bash-Script zur Verwaltung und Analyse von Docker-Netzwerken. -## Beschreibung +Weitere Informationen in der [Dokumentation](docs/README.md). -**Dockernet Inspector** hilft bei der täglichen Arbeit mit Docker-Netzwerken durch zwei Nutzungsmodi: +## Schnellstart -**Interaktiver Modus (Menü):** -- Benutzerfreundliches Menü ohne Kommandozeilenargumente -- Intuitive Netzwerk-Auswahl aus einer Liste -- Fehlerbehandlung bei ungültigen Eingaben - -**Kommandozeilen-Modus (CLI):** -- Schnelle automatisierte Abfragen -- Scripting-freundlich -- Rückwärtskompatibel - -Das Script bietet vier Hauptfunktionen: - -1. Alle Netzwerke auflisten -2. Netzwerk-Details inspizieren -3. Belegte IPs pro Netzwerk anzeigen -4. Belegte IPs in allen Netzwerken anzeigen (aufsteigend sortiert) - -Beim Inspizieren eines Netzwerks werden u. a. folgende Informationen angezeigt: -- Netzwerk-Driver (bridge, overlay, host, ...) -- Bridge-Interface auf dem Host -- Subnet und Gateway -- Interface-Status (operstate) -- RX/TX Netzwerk-Statistiken - -## Installation - -1. Repository klonen: ```bash git clone https://git.techniverse.net/scriptos/dockernet-inspector.git cd dockernet-inspector -``` - -2. Script ausführbar machen: -```bash chmod +x dockernet-inspector.v1.sh -``` - -## Verwendung - -Das Script kann auf zwei Arten verwendet werden: - -### 1. Interaktiver Modus (Menü) - -```bash bash ./dockernet-inspector.v1.sh ``` - -Das Script startet dann ein interaktives Menü, über das Sie folgende Optionen wählen können: -- **1** - Alle Netzwerke auflisten -- **2** - Detaillierte Infos zu einem Netzwerk (mit Netzwerk-Auswahl) -- **3** - IPs eines Netzwerks anzeigen (mit Netzwerk-Auswahl) -- **4** - Alle belegten IPs anzeigen -- **0** - Beenden - -### 2. Kommandozeilen-Modus (CLI) - -```bash -bash ./dockernet-inspector.v1.sh [BEFEHL] [OPTIONEN] -``` - -### Verfügbare Befehle - -| Befehl | Beschreibung | -|--------|--------------| -| *(keine)* | Startet interaktiven Modus | -| `networks` | Listet alle verfügbaren Docker-Netzwerke auf | -| `inspect ` | Zeigt detaillierte Informationen zu einem Netzwerk | -| `ips ` | Zeigt alle belegten IPv4-Adressen im angegebenen Netzwerk | -| `ips-all` | Zeigt alle belegten IPv4-Adressen in allen Docker-Netzwerken (aufsteigend) | -| `` | Alias für `inspect ` (Rückwärtskompatibilität) | -| `help`, `-h`, `--help` | Zeigt die Hilfe an | - -### Beispiele - -#### Interaktiver Modus - -```bash -# Interaktives Menü starten -bash ./dockernet-inspector.v1.sh - -# Output: -# ================================================================================ -# Dockernet Inspector - Interaktives Menü -# ================================================================================ -# -# 1. Alle Netzwerke auflisten -# 2. Detaillierte Infos zu einem Netzwerk -# 3. IPs eines Netzwerks anzeigen -# 4. Alle belegten IPs anzeigen -# 0. Beenden -# -# Bitte waehlen Sie eine Option (0-4): -``` - -Im Menü können Sie einfach die Nummer eingeben. Bei den Optionen 2 und 3 werden Sie aufgefordert, ein Netzwerk aus einer Liste zu wählen. - -#### Kommandozeilen-Modus - -```bash -# Alle Docker-Netzwerke auflisten -bash ./dockernet-inspector.v1.sh networks - -# Netzwerk analysieren (explizit) -bash ./dockernet-inspector.v1.sh inspect bridge - -# Netzwerk analysieren (Alias) -bash ./dockernet-inspector.v1.sh my-custom-network - -# Belegte IPs eines Netzwerks -bash ./dockernet-inspector.v1.sh ips dockernet - -# Belegte IPs in allen Netzwerken -bash ./dockernet-inspector.v1.sh ips-all - -# Hilfe -bash ./dockernet-inspector.v1.sh help -``` - -## Ausgabe-Beispiele - -### `networks` - -```text -Verfügbare Docker Netzwerke: -============================== -ID NAME DRIVER SCOPE -abcd1234efgh5678ijkl9012 bridge bridge local -mnop4567qrst8901uvwx2345 host host local -yzab3456cdef7890ghij1234 mynet bridge local -``` - -### `inspect` - -```text -Docker-Netzwerk : my-network -Driver : bridge -Bridge-Interface : br-1234567890ab -Subnet/Gateway : 172.18.0.0/16 / 172.18.0.1 -OperState : up -RX bytes/packets : 123456 / 789 -TX bytes/packets : 654321 / 456 -``` - -### `ips` - -```text -Belegte IP-Adressen im Netzwerk 'dockernet': -======================================== -CONTAINER IP -dozzle 172.16.0.95 -grafana 172.16.0.129 -``` - -### `ips-all` - -```text -Belegte IP-Adressen in allen Netzwerken (aufsteigend): -======================================================= -NETZWERK CONTAINER IP -dockernet dozzle 172.16.0.95 -datagerry.dockernetwork.local datagerry-nginx 172.16.14.10 -matrixnetwork matrix-synapse-db 172.19.0.11 -``` - -## Fehlerbehandlung - -Das Script gibt unter anderem folgende Fehlermeldungen aus: - -**CLI-Modus:** -- Keine Netzwerk-Angabe bei `inspect`: `Fehler: Netzwerkname erforderlich. Verwendung: $0 inspect ` -- Keine Netzwerk-Angabe bei `ips`: `Fehler: Netzwerkname erforderlich. Verwendung: $0 ips ` -- Netzwerk nicht gefunden: `Fehler: Netzwerk '' nicht gefunden.` -- Docker-Netzwerke konnten nicht abgerufen werden: `Fehler: Docker Netzwerke konnten nicht abgerufen werden.` - -**Interaktiver Modus:** -- Ungültige Eingabe: `FEHLER: Ungueltige Eingabe. Bitte geben Sie eine Nummer zwischen 0 und 4 ein.` -- Keine Netzwerke vorhanden: `Fehler: Keine Docker Netzwerke gefunden.` - -Das Script unterstützt auch Fehlerbehandlung bei ungültigen Eingaben und ermöglicht dem Nutzer, die Eingabe zu korrigieren, ohne dass das Script abstürzt. - -## Voraussetzungen - -- Docker ist installiert und läuft -- Bash (Version 4+ empfohlen) -- Linux-Host (für `/sys/class/net/` beim `inspect`-Befehl) - -## Technische Details - -Das Script nutzt: -- `docker network ls` und `docker network inspect` -- `sort -V` für natürliche IP-Sortierung -- `column -t -s $'\t'` für dynamisch ausgerichtete Tabellen - `set -euo pipefail` für robuste Script-Ausführung ## Lizenz diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..a074e3a --- /dev/null +++ b/docs/README.md @@ -0,0 +1,13 @@ +# Dockernet Inspector – Dokumentation + +Willkommen in der Dokumentation des **Dockernet Inspectors**. + +## Inhaltsverzeichnis + +| Dokument | Beschreibung | +|----------|--------------| +| [Installation](installation.md) | Voraussetzungen, Klonen und Einrichtung | +| [Verwendung](usage.md) | Modi, Befehle und Optionen | +| [Beispiele](examples.md) | Ausgabe-Beispiele zu allen Befehlen | +| [Fehlerbehandlung](error-handling.md) | Fehlermeldungen und deren Bedeutung | +| [Technische Details](technical.md) | Voraussetzungen und verwendete Tools | diff --git a/docs/error-handling.md b/docs/error-handling.md new file mode 100644 index 0000000..05f92ff --- /dev/null +++ b/docs/error-handling.md @@ -0,0 +1,19 @@ +# Fehlerbehandlung + +## CLI-Modus + +| Situation | Fehlermeldung | +|-----------|---------------| +| Kein Netzwerkname bei `inspect` | `Fehler: Netzwerkname erforderlich. Verwendung: $0 inspect ` | +| Kein Netzwerkname bei `ips` | `Fehler: Netzwerkname erforderlich. Verwendung: $0 ips ` | +| Netzwerk nicht gefunden | `Fehler: Netzwerk '' nicht gefunden.` | +| Docker nicht erreichbar | `Fehler: Docker Netzwerke konnten nicht abgerufen werden.` | + +## Interaktiver Modus + +| Situation | Fehlermeldung | +|-----------|---------------| +| Ungültige Menü-Eingabe | `FEHLER: Ungueltige Eingabe. Bitte geben Sie eine Nummer zwischen 0 und 4 ein.` | +| Keine Netzwerke vorhanden | `Fehler: Keine Docker Netzwerke gefunden.` | + +Bei ungültigen Eingaben im interaktiven Modus bricht das Script nicht ab – der Nutzer kann die Eingabe korrigieren. diff --git a/docs/examples.md b/docs/examples.md new file mode 100644 index 0000000..829e576 --- /dev/null +++ b/docs/examples.md @@ -0,0 +1,62 @@ +# Ausgabe-Beispiele + +## `networks` + +```text +Verfügbare Docker Netzwerke: +================================================================================ +ID NAME DRIVER SCOPE +------------------------------------------------------------------------------------ +abcd1234efgh5678ijkl9012 bridge bridge local +mnop4567qrst8901uvwx2345 host host local +yzab3456cdef7890ghij1234 mynet bridge local +``` + +## `inspect` + +```text +Docker-Netzwerk : my-network +Driver : bridge +Bridge-Interface : br-1234567890ab +Subnet/Gateway : 172.18.0.0/16 / 172.18.0.1 +OperState : up +RX bytes/packets : 123456 / 789 +TX bytes/packets : 654321 / 456 +``` + +## `ips` + +```text +Belegte IP-Adressen im Netzwerk 'dockernet': +================================================================================ +CONTAINER IP +dozzle 172.16.0.95 +grafana 172.16.0.129 +``` + +## `ips-all` + +```text +Belegte IP-Adressen in allen Netzwerken (aufsteigend): +================================================================================ +NETZWERK CONTAINER IP +dockernet dozzle 172.16.0.95 +datagerry.dockernetwork.local datagerry-nginx 172.16.14.10 +matrixnetwork matrix-synapse-db 172.19.0.11 +``` + +## Interaktives Menü + +```text +================================================================================ +Dockernet Inspector - Interaktives Menü +================================================================================ + +1. Alle Netzwerke auflisten +2. Detaillierte Infos zu einem Netzwerk +3. IPs eines Netzwerks anzeigen +4. Alle belegten IPs anzeigen +0. Beenden + +Bitte waehlen Sie eine Option (0-4): +``` diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 0000000..b2bd98c --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,22 @@ +# Installation + +## Voraussetzungen + +- Docker ist installiert und läuft +- Bash (Version 4+ empfohlen) +- Linux-Host (für `/sys/class/net/` beim `inspect`-Befehl) + +## Einrichtung + +1. Repository klonen: + +```bash +git clone https://git.techniverse.net/scriptos/dockernet-inspector.git +cd dockernet-inspector +``` + +2. Script ausführbar machen: + +```bash +chmod +x dockernet-inspector.v1.sh +``` diff --git a/docs/technical.md b/docs/technical.md new file mode 100644 index 0000000..88efca7 --- /dev/null +++ b/docs/technical.md @@ -0,0 +1,17 @@ +# Technische Details + +## Voraussetzungen + +- Docker ist installiert und läuft +- Bash Version 4+ +- Linux-Host (für `/sys/class/net/` beim `inspect`-Befehl) + +## Verwendete Tools + +| Tool | Zweck | +|------|-------| +| `docker network ls` | Alle Netzwerke auflisten | +| `docker network inspect` | Netzwerk-Details abfragen | +| `sort -V` | Natürliche IP-Sortierung | +| `column -t -s $'\t'` | Dynamisch ausgerichtete Tabellenausgabe | +| `/sys/class/net/` | Interface-Status und RX/TX-Statistiken | diff --git a/docs/usage.md b/docs/usage.md new file mode 100644 index 0000000..ad3b38a --- /dev/null +++ b/docs/usage.md @@ -0,0 +1,50 @@ +# Verwendung + +Das Script kann auf zwei Arten verwendet werden. + +## Interaktiver Modus (Menü) + +```bash +bash ./dockernet-inspector.v1.sh +``` + +Das Script startet ein interaktives Menü mit folgenden Optionen: + +- **1** – Alle Netzwerke auflisten +- **2** – Detaillierte Infos zu einem Netzwerk (mit Netzwerk-Auswahl) +- **3** – IPs eines Netzwerks anzeigen (mit Netzwerk-Auswahl) +- **4** – Alle belegten IPs anzeigen +- **0** – Beenden + +Bei den Optionen **2** und **3** wird eine Netzwerkliste angezeigt, aus der per Nummer ausgewählt werden kann. + +## Kommandozeilen-Modus (CLI) + +```bash +bash ./dockernet-inspector.v1.sh [BEFEHL] [OPTIONEN] +``` + +### Verfügbare Befehle + +| Befehl | Beschreibung | +|--------|--------------| +| *(keine)* | Startet den interaktiven Modus | +| `networks` | Listet alle verfügbaren Docker-Netzwerke auf | +| `inspect ` | Zeigt detaillierte Informationen zu einem Netzwerk | +| `ips ` | Zeigt alle belegten IPv4-Adressen im angegebenen Netzwerk | +| `ips-all` | Zeigt alle belegten IPv4-Adressen in allen Docker-Netzwerken (aufsteigend sortiert) | +| `` | Alias für `inspect ` (Rückwärtskompatibilität) | +| `help`, `-h`, `--help` | Zeigt die Hilfe an | + +### Kurzbeispiele + +```bash +bash ./dockernet-inspector.v1.sh networks +bash ./dockernet-inspector.v1.sh inspect bridge +bash ./dockernet-inspector.v1.sh my-custom-network +bash ./dockernet-inspector.v1.sh ips dockernet +bash ./dockernet-inspector.v1.sh ips-all +bash ./dockernet-inspector.v1.sh help +``` + +Ausführliche Ausgabe-Beispiele sind in [examples.md](examples.md) zu finden. From 8ed6020107597819e9f38231e4018a3d98442d26 Mon Sep 17 00:00:00 2001 From: scriptos Date: Fri, 10 Apr 2026 12:59:21 +0200 Subject: [PATCH 2/2] feat: Docker-Standardnetzwerke (bridge, host, none) vor Loeschen schuetzen und in Detailansicht kennzeichnen --- README.md | 6 +- dockernet-inspector.v1.sh | 175 ++++++++++++++++++++++++++++++++------ docs/examples.md | 16 +++- docs/usage.md | 3 + 4 files changed, 170 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 6ddc7b5..82b9aa3 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,6 @@ Siehe [LICENSE](./LICENSE). ## Version -- **Version:** 1.2.0 -- **Datum:** 18.02.2026 -- **Modifikation:** IP-Listen pro Netzwerk und netzwerkübergreifend hinzugefügt +- **Version:** 1.4.0 +- **Datum:** 10.04.2026 +- **Modifikation:** Befehl `unused-networks` hinzugefügt, interaktives Menü um Option 5 erweitert diff --git a/dockernet-inspector.v1.sh b/dockernet-inspector.v1.sh index 0a162ec..f985c64 100644 --- a/dockernet-inspector.v1.sh +++ b/dockernet-inspector.v1.sh @@ -5,19 +5,24 @@ # - Alle Netzwerke auflisten # - Details zu einem spezifischen Docker-Netzwerk anzeigen # - Belegte IPs je Netzwerk und netzwerkuebergreifend ausgeben +# - Ungenutzte Netzwerke (ohne Container) anzeigen +# - Netzwerke interaktiv auswaehlen und loeschen # Verwendung: bash ./dockernet-inspector.v1.sh [BEFEHL] [OPTIONS] # Befehle: -# networks - Alle Docker Netzwerke auflisten -# inspect - Details zu einem Netzwerk anzeigen (Standard) -# ips - Belegte IPs in einem Netzwerk -# ips-all - Belegte IPs in allen Netzwerken +# networks - Alle Docker Netzwerke auflisten +# inspect - Details zu einem Netzwerk anzeigen (Standard) +# ips - Belegte IPs in einem Netzwerk +# ips-all - Belegte IPs in allen Netzwerken +# unused-networks - Netzwerke ohne verbundene Container +# delete-networks - Netzwerke interaktiv auswaehlen und loeschen # help, -h, --help - Diese Hilfe anzeigen # 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.6.0 +# Datum: 10.04.2026 +# Modifikation: Schutz fuer Docker-Standardnetzwerke (bridge, host, none) hinzugefuegt; +# Detailansicht zeigt Hinweis statt Bridge-Daten, Loeschen wird blockiert ##################################################### set -uo pipefail @@ -39,7 +44,7 @@ print_table_title() { # Hilfe-Funktion show_help() { cat < - Details zu einem Netzwerk anzeigen $0 ips - Belegte IPs in einem Netzwerk anzeigen $0 ips-all - Belegte IPs in allen Netzwerken anzeigen + $0 unused-networks - Ungenutzte Netzwerke (ohne Container) anzeigen + $0 delete-networks - Netzwerke interaktiv auswaehlen und loeschen $0 - Alias fuer 'inspect ' $0 help - Diese Hilfe anzeigen @@ -54,6 +61,9 @@ BEFEHLE: networks Listet alle verfuegbaren Docker Netzwerke auf ips Zeigt Containername und IPv4-Adresse im angegebenen Netzwerk ips-all Zeigt alle belegten IPv4-Adressen in allen Netzwerken (aufsteigend) + unused-networks Zeigt alle Docker Netzwerke ohne verbundene Container + delete-networks Netzwerk per Nummer auswaehlen und loeschen; + Docker-Standardnetzwerke (bridge, host, none) sind geschuetzt inspect Zeigt detaillierte Informationen zu einem Netzwerk: - Netzwerktyp (Driver) - Bridge-Interface @@ -66,6 +76,8 @@ BEISPIELE: $0 networks $0 ips mynetwork $0 ips-all + $0 unused-networks + $0 delete-networks $0 inspect mynetwork $0 mynetwork $0 -h @@ -157,6 +169,92 @@ list_ips_all_networks() { print_dynamic_table "$table_data" } +list_unused_networks() { + local nets net containers table_data has_unused + + nets="$(docker network ls --format '{{.Name}}' 2>/dev/null || true)" + [[ -z "$nets" ]] && { + echo "Fehler: Docker Netzwerke konnten nicht abgerufen werden." + exit 2 + } + + table_data=$'NAME\tDRIVER\tSCOPE\n' + has_unused=false + + while read -r net; do + [[ -z "${net:-}" ]] && continue + containers="$(docker network inspect "$net" --format '{{len .Containers}}' 2>/dev/null || true)" + if [[ "${containers:-0}" -eq 0 ]]; then + local driver scope + driver="$(docker network inspect "$net" --format '{{.Driver}}' 2>/dev/null || true)" + scope="$(docker network inspect "$net" --format '{{.Scope}}' 2>/dev/null || true)" + table_data+="${net}"$'\t'"${driver}"$'\t'"${scope}"$'\n' + has_unused=true + fi + done < <(printf "%s\n" "$nets") + + if ! $has_unused; then + echo "Alle Docker Netzwerke haben mindestens einen verbundenen Container." + return 0 + fi + + print_table_title "Ungenutzte Docker Netzwerke (keine Container verbunden):" + print_dynamic_table "$table_data" +} + +delete_networks() { + local nets + nets="$(docker network ls --format '{{.Name}}' 2>/dev/null || true)" + if [[ -z "$nets" ]]; then + echo "Fehler: Keine Docker Netzwerke gefunden." + return 1 + fi + + local -a net_array + mapfile -t net_array <<< "$nets" + + echo "" + echo "Verfuegbare Docker Netzwerke:" + echo "" + local i + for ((i=0; i<${#net_array[@]}; i++)); do + local suffix="" + [[ "${net_array[$i]}" == "bridge" || "${net_array[$i]}" == "host" || "${net_array[$i]}" == "none" ]] && suffix=" (Standard - nicht loeschbar)" + printf " %d. %s%s\n" "$((i+1))" "${net_array[$i]}" "$suffix" + done + echo "" + read -rp "Nummer des Netzwerks eingeben (0 = Abbrechen): " choice + + if [[ "$choice" == "0" || -z "$choice" ]]; then + echo "Abgebrochen." + return 0 + fi + + if ! [[ "$choice" =~ ^[0-9]+$ ]] || ((choice < 1 || choice > ${#net_array[@]})); then + echo "Fehler: Ungueltige Nummer." + return 1 + fi + + local selected_net="${net_array[$((choice-1))]}" + if [[ "$selected_net" == "bridge" || "$selected_net" == "host" || "$selected_net" == "none" ]]; then + echo "FEHLER: '$selected_net' ist ein Docker-Standardnetzwerk und kann nicht geloescht werden." + return 1 + fi + echo "" + read -rp "Netzwerk '$selected_net' wirklich loeschen? [j/N]: " confirm + if [[ "$confirm" != "j" && "$confirm" != "J" ]]; then + echo "Abgebrochen." + return 0 + fi + + echo "" + if docker network rm "$selected_net" 2>/dev/null; then + echo "OK: Netzwerk '$selected_net' erfolgreich geloescht." + else + echo "FEHLER: Netzwerk '$selected_net' konnte nicht geloescht werden (wird moeglicherweise noch genutzt)." + fi +} + # Interaktive Menü-Funktion interactive_menu() { while true; do @@ -169,9 +267,11 @@ interactive_menu() { echo "2. Detaillierte Infos zu einem Netzwerk" echo "3. IPs eines Netzwerks anzeigen" echo "4. Alle belegten IPs anzeigen" + echo "5. Ungenutzte Netzwerke anzeigen" + echo "6. Netzwerke loeschen" echo "0. Beenden" echo "" - read -p "Bitte waehlen Sie eine Option (0-4): " choice + read -rp "Bitte waehlen Sie eine Option (0-6): " choice echo "" case "$choice" in @@ -203,12 +303,18 @@ interactive_menu() { 4) list_ips_all_networks ;; + 5) + list_unused_networks + ;; + 6) + delete_networks + ;; 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 6 ein." sleep 1 ;; esac @@ -240,26 +346,44 @@ select_and_inspect_network() { # Separate Funktion fuer Netzwerk-Inspektion inspect_network() { local NET="$1" - - # 1) Netzwerk-ID und Bridge-Name separat holen + + local DRIVER + DRIVER="$(docker network inspect "$NET" --format '{{.Driver}}' 2>/dev/null || true)" + [[ -z "$DRIVER" ]] && { echo "Fehler: Netzwerk '$NET' nicht gefunden."; return 2; } + + echo "" + print_rule "=" + echo "Detaillerte Informationen fuer Netzwerk: $NET" + print_rule "=" + echo "" + + # Sonderbehandlung fuer Docker-Standardnetzwerke + if [[ "$NET" == "none" || "$NET" == "host" || "$NET" == "bridge" ]]; then + cat </dev/null || true)" - [[ -z "$ID" ]] && { echo "Fehler: Netzwerk '$NET' nicht gefunden."; return 2; } BR_RAW="$(docker network inspect "$NET" --format '{{index .Options "com.docker.network.bridge.name"}}' 2>/dev/null || true)" - - # 2) Falls kein eigener Bridge-Name: Standardname br- if [[ -z "$BR_RAW" || "$BR_RAW" == "" ]]; then IF="br-${ID:0:12}" else IF="$BR_RAW" fi - # 3) Subnet/Gateway + # 2) Subnet/Gateway SUBNET="$(docker network inspect "$NET" --format '{{(index .IPAM.Config 0).Subnet}}' 2>/dev/null || true)" GATEWAY="$(docker network inspect "$NET" --format '{{(index .IPAM.Config 0).Gateway}}' 2>/dev/null || true)" - # 4) Interface-Status & Stats + # 3) Interface-Status & Stats state="unknown"; rxb=0; txb=0; rxp=0; txp=0 if ip link show "$IF" &>/dev/null; then state="$(cat /sys/class/net/"$IF"/operstate 2>/dev/null || echo unknown)" @@ -267,18 +391,11 @@ inspect_network() { txb="$(cat /sys/class/net/"$IF"/statistics/tx_bytes 2>/dev/null || echo 0)" rxp="$(cat /sys/class/net/"$IF"/statistics/rx_packets 2>/dev/null || echo 0)" txp="$(cat /sys/class/net/"$IF"/statistics/tx_packets 2>/dev/null || echo 0)" - else - echo "WARN: Interface $IF existiert (noch) nicht auf dem Host." fi - echo "" - print_rule "=" - echo "Detaillerte Informationen fuer Netzwerk: $NET" - print_rule "=" - echo "" cat <` | Zeigt detaillierte Informationen zu einem Netzwerk | | `ips ` | Zeigt alle belegten IPv4-Adressen im angegebenen Netzwerk | | `ips-all` | Zeigt alle belegten IPv4-Adressen in allen Docker-Netzwerken (aufsteigend sortiert) | +| `unused-networks` | Zeigt alle Docker-Netzwerke ohne verbundene Container | | `` | Alias für `inspect ` (Rückwärtskompatibilität) | | `help`, `-h`, `--help` | Zeigt die Hilfe an | @@ -44,6 +46,7 @@ bash ./dockernet-inspector.v1.sh inspect bridge bash ./dockernet-inspector.v1.sh my-custom-network bash ./dockernet-inspector.v1.sh ips dockernet bash ./dockernet-inspector.v1.sh ips-all +bash ./dockernet-inspector.v1.sh unused-networks bash ./dockernet-inspector.v1.sh help ```