Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bba8deffc7 |
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user