1 Commits
main ... v1.4.0

View File

@@ -15,9 +15,9 @@
# 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.4.0
# Datum: 22.03.2026
# Modifikation: Netzwerk loeschen Funktion hinzugefügt (nur unbenutzte Netzwerke)
#####################################################
set -uo pipefail
@@ -157,6 +157,54 @@ list_ips_all_networks() {
print_dynamic_table "$table_data"
}
# Funktion zum Loeschen eines unbenutzten Netzwerks
delete_network() {
local nets net container_count
nets="$(docker network ls --format '{{.Name}}' 2>/dev/null || true)"
if [[ -z "$nets" ]]; then
echo "Fehler: Keine Docker Netzwerke gefunden."
return 1
fi
echo "Verfuegbare Netzwerke:"
select net in $nets; do
if [[ -n "$net" ]]; then
# Standardnetzwerke schuetzen
if [[ "$net" == "bridge" || "$net" == "host" || "$net" == "none" ]]; then
echo "FEHLER: Das Standard-Netzwerk '$net' kann nicht geloescht werden."
return 1
fi
# Pruefen ob Container das Netzwerk verwenden
container_count="$(docker network inspect "$net" --format '{{len .Containers}}' 2>/dev/null || echo 0)"
if [[ "$container_count" -gt 0 ]]; then
echo "FEHLER: Das Netzwerk '$net' wird aktuell von $container_count Container(n) verwendet und kann nicht geloescht werden."
echo ""
echo "Verbundene Container:"
docker network inspect "$net" --format '{{range $id, $c := .Containers}} - {{$c.Name}} ({{$c.IPv4Address}}){{println}}{{end}}' 2>/dev/null
return 1
fi
# Sicherheitsabfrage
read -p "Soll das Netzwerk '$net' wirklich geloescht werden? (j/N): " confirm
if [[ "$confirm" == "j" || "$confirm" == "J" ]]; then
if docker network rm "$net" >/dev/null 2>&1; then
echo "Netzwerk '$net' wurde erfolgreich geloescht."
else
echo "FEHLER: Netzwerk '$net' konnte nicht geloescht werden."
return 1
fi
else
echo "Loeschvorgang abgebrochen."
fi
return 0
else
echo "Ungueltige Auswahl. Bitte versuchen Sie es erneut."
fi
done
}
# Interaktive Menü-Funktion
interactive_menu() {
while true; do
@@ -169,9 +217,10 @@ interactive_menu() {
echo "2. Detaillierte Infos zu einem Netzwerk"
echo "3. IPs eines Netzwerks anzeigen"
echo "4. Alle belegten IPs anzeigen"
echo "5. Netzwerk loeschen"
echo "0. Beenden"
echo ""
read -p "Bitte waehlen Sie eine Option (0-4): " choice
read -p "Bitte waehlen Sie eine Option (0-5): " choice
echo ""
case "$choice" in
@@ -203,12 +252,15 @@ interactive_menu() {
4)
list_ips_all_networks
;;
5)
delete_network
;;
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 5 ein."
sleep 1
;;
esac