Files
dockernet-inspector/README.md

218 lines
6.1 KiB
Markdown

# Dockernet Inspector
Ein Bash-Script zur Verwaltung und Analyse von Docker-Netzwerken.
## Beschreibung
**Dockernet Inspector** hilft bei der täglichen Arbeit mit Docker-Netzwerken durch zwei Nutzungsmodi:
**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 <netzwerk>` | Zeigt detaillierte Informationen zu einem Netzwerk |
| `ips <netzwerk>` | Zeigt alle belegten IPv4-Adressen im angegebenen Netzwerk |
| `ips-all` | Zeigt alle belegten IPv4-Adressen in allen Docker-Netzwerken (aufsteigend) |
| `<netzwerk>` | Alias für `inspect <netzwerk>` (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 <docker-network-name>`
- Keine Netzwerk-Angabe bei `ips`: `Fehler: Netzwerkname erforderlich. Verwendung: $0 ips <docker-network-name>`
- Netzwerk nicht gefunden: `Fehler: Netzwerk '<name>' 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
Siehe [LICENSE](./LICENSE).
## Autor
**Patrick Asmus**
- Website: [https://www.cleveradmin.de](https://www.cleveradmin.de)
- Git: [https://git.techniverse.net/scriptos/dockernet-inspector.git](https://git.techniverse.net/scriptos/dockernet-inspector.git)
## Version
- **Version:** 1.2.0
- **Datum:** 18.02.2026
- **Modifikation:** IP-Listen pro Netzwerk und netzwerkübergreifend hinzugefügt