Ein robustes und interaktives Bash-Skript zur einfachen Verwaltung von Network Bonding (Active-Backup-Modus) unter Linux-Distributionen, die den NetworkManager (nmcli) verwenden. Das Tool bietet Menü-gesteuerte Optionen für Aktivierung, Diagnose und Konfiguration von Netzwerk-Schnittstellen.
Der Universal Network Bond Manager bietet folgende Hauptfunktionen über ein interaktives Menü:
- Bonding Aktivierung: Erstellt und aktiviert einen Bond-Master (
bond0) im Active-Backup-Modus und konfiguriert die ausgewählten physischen Adapter als Slaves. - Backup-System: Erstellt ein Backup aller aktiven NetworkManager-Profile vor der Bond-Aktivierung und stellt diese beim Deaktivieren wieder her.
- Bonding Deaktivierung: Löscht die Bond-Profile (
bond0und alle Slaves) und stellt die ursprünglichen Profile aus dem Backup wieder her. - Notfall-Reparatur (
Emergency Repair): Löscht aggressiv alle Bond-Profile und stellt die Slaves auf individuelle DHCP-Profile um.
- Sprachauswahl: Dynamische Umschaltung zwischen Deutsch (DE) und Englisch (EN).
- Konfigurationsmenü: Erlaubt das Ändern der Bonding-Parameter (Slaves, primärer Slave, statische IP/Gateway/DNS).
- Diagnose/Statusprüfung: Zeigt den aktuellen Bond-Status, den aktiven Slave und den MII-Link-Status an.
- Paketverwaltung: Integriertes Menü zur Installation/Deinstallation von Hilfstools (
speedtest-cli,net-tools) unter Verwendung des automatisch erkannten System-Paketmanagers. - Speedtest-Funktion: Startet einen Geschwindigkeitstest. Unterstützt die manuelle Eingabe einer Server-ID für konsistente Messungen.
git clone [https://github.com/meltymon/Network_Bond_Manager.git](https://github.com/meltymon/Network_Bond_Manager.git)
cd Network_Bond_Manager
💡 Hinweis: Stellen Sie sicher, dass Git auf Ihrem System installiert ist.
Da das Skript systemweite Änderungen an der Netzwerkkonfiguration vornimmt (über nmcli), muss es mit Root-Rechten (sudo) ausgeführt werden.
Stellen Sie zunächst die Ausführungsberechtigung sicher:
chmod +x main.sh
Anschließend starten Sie das interaktive Tool:
sudo ./main.sh
Das Projekt wurde vollständig modularisiert (Separation of Concerns) in dedizierte Ordner und Dateien, um die Wartbarkeit und Erweiterbarkeit zu maximieren.
| Datei / Ordner | Zweck | Details |
|---|---|---|
main.sh |
Einstiegspunkt | Lädt alle Konfigurationen und Funktionen und enthält die Haupt-Menüschleife. |
config.sh |
Globale Variablen | Enthält alle konfigurierbaren Variablen wie IP_ADDRESS, PRIMARY_SLAVE, SPEEDTEST_SERVER_IDS. |
funcs/ |
Funktionsbibliothek | Beinhaltet alle modularen Skriptteile (Kernlogik, Menüsteuerung, Tools). |
funcs/funcs_utils.sh |
Utilities | Enthält Hilfsfunktionen wie das Übersetzungstool tr(), show_menu und das Backup/Restore-System. |
funcs/funcs_core.sh |
Kernlogik | Enthält die kritischen Funktionen zur Bonding-Steuerung (activate_bonding, deactivate_bonding, etc.). |
funcs/funcs_menu.sh |
Menü-Logik | Verwaltet die Benutzeroberfläche und die Erfassung der Konfigurationsparameter (z.B. Adapterauswahl). |
funcs/funcs_tools.sh |
Tool-Funktionen | Implementiert Diagnose- und Verwaltungstools (run_speedtest, manage_packages). |
langs/ |
Sprachdateien | Enthält alle Text-Arrays für die Lokalisierung. |
langs/lang_de.sh |
Deutsch (DE) | Enthält alle deutschen Übersetzungen. |
langs/lang_en.sh |
Englisch (EN) | Enthält alle englischen Übersetzungen. |
Die Datei config.sh ist das zentrale Element zur Anpassung des Skriptverhaltens. Viele dieser Variablen können auch über das Menü (Option 7) zur Laufzeit geändert werden.
| Variable | Standardwert | Beschreibung |
|---|---|---|
BOND_IFACE |
"bond0" |
Der Name des Bond-Masters, der erstellt wird. |
BOND_MODE |
"active-backup" |
Der Bonding-Modus (wird im Skript auf active-backup fest codiert). |
PRIMARY_SLAVE |
"" |
Definiert den bevorzugten (aktiven) Slave im Active-Backup-Modus. Leer lassen für automatische Auswahl. |
SLAVES |
() |
Ein Array der physischen Netzwerknamen (eth0, enp1s0, etc.), die gebondet werden sollen. |
IP_ADDRESS |
"" |
Die statische IP-Adresse (z.B. 192.168.1.100/24) für die Bond-Schnittstelle. |
GATEWAY |
"" |
Der Standard-Gateway. |
DNS_SERVERS |
"" |
Komma-getrennte Liste der DNS-Server (z.B. "8.8.8.8,8.8.4.4"). |
BOND_MIIMON |
"100" |
Intervall zur Link-Überwachung in Millisekunden. |
SPEEDTEST_TOOL |
"speedtest-cli" |
Das zu verwendende Speedtest-Programm. |
SPEEDTEST_SERVER_IDS |
"" |
Manuelle ID des Servers für konsistente Geschwindigkeitstests. |
Ein Konfigurationsbeispiel, um die Adapter eth0 und eth1 mit einer statischen IP zu bonden:
#!/bin/bash
# --- Netzwerk Konfiguration ---
BOND_IFACE="bond0"
PRIMARY_SLAVE="eth0"
SLAVES=("eth0" "eth1")
IP_ADDRESS="192.168.10.50/24"
GATEWAY="192.168.10.1"
DNS_SERVERS="8.8.8.8,1.1.1.1"
# --- Bonding Parameter ---
BOND_MODE="active-backup"
BOND_MIIMON="100"
# --- Tools ---
SPEEDTEST_TOOL="speedtest-cli"
SPEEDTEST_SERVER_IDS=""
- Versionsnummer: 5.4
- Status: Stabile, modularisierte Version.
- Neu: Vollständiges Refactoring und Modularisierung des gesamten Skripts in dedizierte
funcs/undlangs/Ordner. - Fix: Fehlerbehebung der
read -rpPrompts in der Paketverwaltung für eine korrekte, sprachabhängige Ausgabe. - Status: Erfolgreicher initialer Commit und Push auf GitHub abgeschlossen.
- Versionsnummer: 5.0
- Neu: Einführung der Backup- und Restore-Funktionen für NetworkManager-Profile zur Gewährleistung der Rückwärtskompatibilität.
- Neu: Erstmalige Implementierung des NMCLI-Backends für die persistente Bond-Erstellung.
- Neu: Erkennung des System-Paketmanagers (
apt,pacmanetc.) implementiert.
- Versionsnummer: 3.1
- Neu: Implementierung der Notfall-Reparatur (
Emergency Repair) Funktion zur aggressiven Rücksetzung der Adapter auf DHCP-Profile. - Fix: Verbesserung der Adapter-Auswahllogik, um nur physische Ethernet-Adapter anzuzeigen.
- Versionsnummer: 2.0
- Neu: Einführung eines interaktiven Menüsystems anstelle einfacher Kommandozeilen-Argumente.
- Neu: Implementierung der Basis-Bonding-Funktionalität im Active-Backup-Modus.
- Neu: Erste Implementierung der Diagnose- und Statusprüfung.
- Versionsnummer: 1.0
- Neu: Erstellung der ersten rudimentären Bash-Skript-Logik zur Konfiguration von Netzwerk-Bonds über die Konfigurationsdateien (Legacy-Methode).
- Neu: Definition der globalen Variablen (
BOND_IFACE,PRIMARY_SLAVE).
Beiträge zur Verbesserung dieses Projekts sind herzlich willkommen!
[Image of GitHub Pull Request workflow]
- Forken Sie das Repository.
- Erstellen Sie einen neuen Branch für Ihre Funktion:
git checkout -b feature/IhreFunktion
- Committen Sie Ihre Änderungen:
git commit -m 'feat: Neue Funktion hinzugefügt' - Pushen Sie den Branch:
git push origin feature/IhreFunktion
- Erstellen Sie einen Pull Request.
Dieses Projekt steht unter der MIT License. Diese permissive Lizenz erlaubt eine breite Nutzung und Weitergabe des Codes.
Details finden Sie in der LICENSE-Datei.