#!/usr/bin/env bash # Script Name: dockernet-inspector.v1.sh # Beschreibung: Dockernet Inspector - Verwaltet und inspiziert Docker-Netzwerke # - Alle Netzwerke auflisten # - Details zu einem spezifischen Docker-Netzwerk anzeigen # (Netzwerktyp, Bridge-Interface, Subnet/Gateway, Interface-Status & Stats) # Verwendung: bash ./dockernet-inspector.v1.sh [BEFEHL] [OPTIONS] # Befehle: # networks - Alle Docker Netzwerke auflisten # inspect - Details zu einem Netzwerk anzeigen (Standard) # 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.1.0 # Datum: 17.02.2026 # Modifikation: Funktion zum Auflisten aller Docker Netzwerke hinzugefügt ##################################################### set -euo pipefail # Hilfe-Funktion show_help() { cat < - Details zu einem Netzwerk anzeigen $0 - Alias für 'inspect ' $0 help - Diese Hilfe anzeigen BEFEHLE: networks Listet alle verfügbaren Docker Netzwerke auf inspect Zeigt detaillierte Informationen zu einem Netzwerk: - Netzwerktyp (Driver) - Bridge-Interface - Subnetz und Gateway - Interface-Status - Netzwerk-Statistiken (RX/TX bytes und packets) help Zeigt diese Hilfe an BEISPIELE: $0 networks $0 inspect mynetwork $0 mynetwork $0 -h HELP } # Funktion zum Auflisten aller Docker Netzwerke list_networks() { echo "Verfügbare Docker Netzwerke:" echo "==============================" docker network ls --format "table {{.ID}}\t{{.Name}}\t{{.Driver}}\t{{.Scope}}" || { echo "Fehler: Docker Netzwerke konnten nicht abgerufen werden." exit 2 } } # Argument-Verarbeitung COMMAND="${1:-}" case "$COMMAND" in networks) list_networks exit 0 ;; help | -h | --help) show_help exit 0 ;; inspect) NET="${2:-}" [[ -z "$NET" ]] && { echo "Fehler: Netzwerkname erforderlich. Verwendung: $0 inspect "; exit 1; } ;; "") echo "Fehler: Befehl erforderlich. Verwendung: $0 networks|inspect|help" exit 1 ;; *) # Kompatibilität: Wenn erstes Argument kein bekannter Befehl ist, behandle es als Netzwerkname NET="$COMMAND" ;; esac # Hauptlogik für die Inspektion eines Netzwerks (rest des originalen Scripts) [[ -z "$NET" ]] && { echo "Fehler: Netzwerkname erforderlich. Verwendung: $0 "; exit 1; } # 1) Netzwerk-ID und Bridge-Name separat holen (jeweils eigenes inspect) ID="$(docker network inspect "$NET" --format '{{.Id}}' 2>/dev/null || true)" [[ -z "$ID" ]] && { echo "Fehler: Netzwerk '$NET' nicht gefunden."; exit 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 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 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)" rxb="$(cat /sys/class/net/"$IF"/statistics/rx_bytes 2>/dev/null || echo 0)" 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 cat <