release/v1.4.0 #5
196
README.md
196
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 <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
|
||||
@@ -212,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
|
||||
|
||||
@@ -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 <<HELP
|
||||
Dockernet Inspector v1.2.0 - Docker Netzwerk Verwaltungstool
|
||||
Dockernet Inspector v1.6.0 - Docker Netzwerk Verwaltungstool
|
||||
|
||||
VERWENDUNG:
|
||||
$0 - Interaktiver Modus (Menü)
|
||||
@@ -47,6 +52,8 @@ VERWENDUNG:
|
||||
$0 inspect <netzwerk> - Details zu einem Netzwerk anzeigen
|
||||
$0 ips <netzwerk> - 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 <netzwerk> - Alias fuer 'inspect <netzwerk>'
|
||||
$0 help - Diese Hilfe anzeigen
|
||||
|
||||
@@ -54,6 +61,9 @@ BEFEHLE:
|
||||
networks Listet alle verfuegbaren Docker Netzwerke auf
|
||||
ips <netzwerk> 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 <netzwerk> 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 <<OUT
|
||||
Docker-Netzwerk : $NET
|
||||
Driver : $DRIVER
|
||||
Hinweis : Dies ist ein Docker-Standardnetzwerk und kann nicht geloescht werden.
|
||||
OUT
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
|
||||
# 1) Netzwerk-ID und Bridge-Name
|
||||
local ID BR_RAW IF SUBNET GATEWAY state rxb txb rxp txp
|
||||
ID="$(docker network inspect "$NET" --format '{{.Id}}' 2>/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-<ID[:12]>
|
||||
if [[ -z "$BR_RAW" || "$BR_RAW" == "<no value>" ]]; 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 <<OUT
|
||||
Docker-Netzwerk : $NET
|
||||
Driver : $(docker network inspect "$NET" --format '{{.Driver}}')
|
||||
Driver : $DRIVER
|
||||
Bridge-Interface : $IF
|
||||
Subnet/Gateway : ${SUBNET:--} / ${GATEWAY:--}
|
||||
OperState : $state
|
||||
@@ -305,6 +422,14 @@ case "$COMMAND" in
|
||||
list_ips_all_networks
|
||||
exit 0
|
||||
;;
|
||||
unused-networks)
|
||||
list_unused_networks
|
||||
exit 0
|
||||
;;
|
||||
delete-networks)
|
||||
delete_networks
|
||||
exit 0
|
||||
;;
|
||||
help | -h | --help)
|
||||
show_help
|
||||
exit 0
|
||||
|
||||
13
docs/README.md
Normal file
13
docs/README.md
Normal file
@@ -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 |
|
||||
19
docs/error-handling.md
Normal file
19
docs/error-handling.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Fehlerbehandlung
|
||||
|
||||
## CLI-Modus
|
||||
|
||||
| Situation | Fehlermeldung |
|
||||
|-----------|---------------|
|
||||
| Kein Netzwerkname bei `inspect` | `Fehler: Netzwerkname erforderlich. Verwendung: $0 inspect <docker-network-name>` |
|
||||
| Kein Netzwerkname bei `ips` | `Fehler: Netzwerkname erforderlich. Verwendung: $0 ips <docker-network-name>` |
|
||||
| Netzwerk nicht gefunden | `Fehler: Netzwerk '<name>' 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.
|
||||
74
docs/examples.md
Normal file
74
docs/examples.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 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
|
||||
================================================================================
|
||||
Dockerdet Inspector - Interaktives Menü
|
||||
================================================================================
|
||||
|
||||
1. Alle Netzwerke auflisten
|
||||
2. Detaillierte Infos zu einem Netzwerk
|
||||
3. IPs eines Netzwerks anzeigen
|
||||
4. Alle belegten IPs anzeigen
|
||||
5. Ungenutzte Netzwerke anzeigen
|
||||
0. Beenden
|
||||
|
||||
Bitte waehlen Sie eine Option (0-5):
|
||||
```
|
||||
|
||||
## `unused-networks`
|
||||
|
||||
```text
|
||||
Ungenutzte Docker Netzwerke (keine Container verbunden):
|
||||
================================================================================
|
||||
NAME DRIVER SCOPE
|
||||
--------------------------------------------------------------------------------
|
||||
old-backend bridge local
|
||||
test-network bridge local
|
||||
```
|
||||
22
docs/installation.md
Normal file
22
docs/installation.md
Normal file
@@ -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
|
||||
```
|
||||
17
docs/technical.md
Normal file
17
docs/technical.md
Normal file
@@ -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 |
|
||||
53
docs/usage.md
Normal file
53
docs/usage.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# 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
|
||||
- **5** – Ungenutzte Netzwerke 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 <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 sortiert) |
|
||||
| `unused-networks` | Zeigt alle Docker-Netzwerke ohne verbundene Container |
|
||||
| `<netzwerk>` | Alias für `inspect <netzwerk>` (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 unused-networks
|
||||
bash ./dockernet-inspector.v1.sh help
|
||||
```
|
||||
|
||||
Ausführliche Ausgabe-Beispiele sind in [examples.md](examples.md) zu finden.
|
||||
Reference in New Issue
Block a user