This commit is contained in:
2026-02-18 14:19:12 +01:00
parent 2283176253
commit 1b171e16e3
3 changed files with 198 additions and 90 deletions

151
README.md
View File

@@ -2,21 +2,23 @@
Ein Bash-Script zur Verwaltung und Analyse von Docker-Netzwerken.
## 📋 Beschreibung
## Beschreibung
**Dockernet Inspector** ist ein praktisches Bash-Script, das Administratoren und Entwicklern die Verwaltung und Analyse von Docker-Netzwerken erleichtert. Das Script bietet zwei Hauptfunktionen:
**Dockernet Inspector** hilft bei der täglichen Arbeit mit Docker-Netzwerken und bietet vier Hauptfunktionen:
1. **Alle Netzwerke auflisten** - Anzeige aller verfügbaren Docker-Netzwerke mit ihren Treibern
2. **Netzwerk-Details inspizieren** - Detaillierte Informationen zu einem spezifischen Netzwerk
1. Alle Netzwerke auflisten
2. Netzwerk-Details inspizieren
3. Belegte IPs pro Netzwerk anzeigen
4. Belegte IPs in allen Netzwerken anzeigen (aufsteigend sortiert)
Das Script zeigt folgende Informationen beim Inspizieren an:
- **Netzwerk-Driver** (bridge, overlay, host, etc.)
- **Bridge-Interface-Name** auf dem Host-System
- **Subnet und Gateway** des Netzwerks
- **Interface-Status** (operstate: up, down, unknown)
- **Netzwerk-Statistiken** (RX/TX Bytes und Pakete)
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
## Installation
1. Repository klonen:
```bash
@@ -29,48 +31,52 @@ cd dockernet-inspector
chmod +x dockernet-inspector.v1.sh
```
## 💡 Verwendung
## Verwendung
### Grundlegende Syntax
### Syntax
```bash
bash ./dockernet-inspector.v1.sh [BEFEHL] [OPTIONS]
bash ./dockernet-inspector.v1.sh [BEFEHL] [OPTIONEN]
```
### Verfügbare Befehle
| Befehl | Beschreibung |
|--------|-------------|
|--------|--------------|
| `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
**Beispiel 1: Alle Docker-Netzwerke auflisten**
```bash
# Alle Docker-Netzwerke auflisten
bash ./dockernet-inspector.v1.sh networks
```
**Beispiel 2: Standard Bridge-Netzwerk analysieren (mit inspect)**
```bash
# Netzwerk analysieren (explizit)
bash ./dockernet-inspector.v1.sh inspect bridge
```
**Beispiel 3: Benutzerdefiniertes Netzwerk analysieren (Schnellform)**
```bash
# Netzwerk analysieren (Alias)
bash ./dockernet-inspector.v1.sh my-custom-network
```
**Beispiel 4: Hilfe anzeigen**
```bash
# 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
```
### Beispiel-Ausgabe für `networks`
## Ausgabe-Beispiele
```
### `networks`
```text
Verfügbare Docker Netzwerke:
==============================
ID NAME DRIVER SCOPE
@@ -79,9 +85,9 @@ mnop4567qrst8901uvwx2345 host host local
yzab3456cdef7890ghij1234 mynet bridge local
```
### Beispiel-Ausgabe für `inspect`
### `inspect`
```
```text
Docker-Netzwerk : my-network
Driver : bridge
Bridge-Interface : br-1234567890ab
@@ -91,66 +97,63 @@ RX bytes/packets : 123456 / 789
TX bytes/packets : 654321 / 456
```
## 📊 Ausgabe-Details
### `ips`
| Feld | Beschreibung |
|------|-------------|
| **Docker-Netzwerk** | Name des analysierten Docker-Netzwerks |
| **Driver** | Verwendeter Netzwerk-Treiber (bridge, overlay, host, etc.) |
| **Bridge-Interface** | Name des Bridge-Interfaces auf dem Host (z.B. `br-xxxxxxxxxxxx`) |
| **Subnet/Gateway** | IP-Bereich und Gateway-Adresse des Netzwerks |
| **OperState** | Betriebszustand des Interfaces (up, down, unknown) |
| **RX bytes/packets** | Empfangene Bytes/Pakete |
| **TX bytes/packets** | Gesendete Bytes/Pakete |
```text
Belegte IP-Adressen im Netzwerk 'dockernet':
========================================
CONTAINER IP
dozzle 172.16.0.95
grafana 172.16.0.129
```
## ⚠️ Voraussetzungen
### `ips-all`
- **Docker** muss installiert und laufend sein
- **Bash** (Version 4.0 oder höher empfohlen)
- **Root/Sudo-Rechte** können für den Zugriff auf System-Interfaces erforderlich sein
- Linux-Betriebssystem (das Script nutzt `/sys/class/net/` für Interface-Statistiken)
```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
## Fehlerbehandlung
Das Script gibt folgende Fehlermeldungen aus:
Das Script gibt unter anderem folgende Fehlermeldungen aus:
- **Kein Befehl angegeben:** `Fehler: Befehl erforderlich. Verwendung: $0 networks|inspect|help`
- **Keine Netzwerk-Angabe beim Inspizieren:** `Fehler: Netzwerkname erforderlich. Verwendung: $0 inspect <docker-network-name>`
- **Netzwerk nicht gefunden:** `Fehler: Netzwerk '<name>' nicht gefunden.`
- **Docker Netzwerke konnten nicht abgerufen werden:** `Fehler: Docker Netzwerke konnten nicht abgerufen werden.`
- **Interface existiert nicht:** `WARN: Interface <name> existiert (noch) nicht auf dem Host.`
- Kein Befehl angegeben: `Fehler: Befehl erforderlich. Verwendung: $0 networks|inspect|ips|ips-all|help`
- 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.`
## 🛠️ Technische Details
## 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 inspect` zur Abfrage von Netzwerk-Informationen
- `/sys/class/net/` Interface für Netzwerk-Statistiken
- `set -euo pipefail` für sichere Script-Ausführung
- `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
## Lizenz
Siehe [LICENSE](./LICENSE) Datei für Details.
Siehe [LICENSE](./LICENSE).
## 👤 Autor
## 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)
## 🤝 Beitragen
## Version
Beiträge, Issues und Feature-Anfragen sind willkommen!
## 📅 Version
- **Version:** 1.1.0
- **Datum:** 17.02.2026
- **Modifikation:** Funktion zur Auflistung aller Docker-Netzwerke hinzugefügt
<p align="center">
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
</p>
<p align="center">
<img src="https://assets.techniverse.net/f1/logos/small/license.png" alt="License" width="15" height="15"> <a href="./LICENSE">License</a> | <img src="https://assets.techniverse.net/f1/logos/small/matrix2.svg" alt="Matrix" width="15" height="15"> <a href="https://matrix.to/#/#community:techniverse.net">Matrix</a> | <img src="https://assets.techniverse.net/f1/logos/small/mastodon2.svg" alt="Matrix" width="15" height="15"> <a href="https://social.techniverse.net/@donnerwolke">Mastodon</a>
</p>
- **Version:** 1.2.0
- **Datum:** 18.02.2026
- **Modifikation:** IP-Listen pro Netzwerk und netzwerkübergreifend hinzugefügt