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.