Bei der Bedienung und Konfiguration von Linux wird häufig die Bindung von zwei Netzwerkkarten verwendet. Die Konfiguration einiger Server ist in Ordnung, aber wenn Sie Dutzende oder sogar Hunderte von Servern konfigurieren müssen, wird es zwangsläufig langweilig und fehleranfällig. Ich habe dieses Hilfsskript für die Bindung von zwei Netzwerkkarten geschrieben, mit dem die Arbeit der Bindung von zwei Netzwerkkarten unter Linux kinderleicht erledigt werden kann. Natürlich wird dieses Skript hauptsächlich für die Konfiguration kleinerer Systeme verwendet. Wenn Sie eine große Anzahl von Servern konfigurieren müssen, können Sie die Bindungsfunktion im Skript extrahieren und geringfügige Änderungen vornehmen. Es ist einen Versuch wert! 1. Geltungsbereich Dieses Shell-Skript kann in den folgenden Linux-Systemen mehrere verbundene Netzwerkkarten erstellen, was für Produktionsumgebungen problemlos möglich ist:
2. Skriptfunktionen ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth0 Zweite Netzwerkkarte: eth1 Anleihename: bond1 IP-Adresse: 192.168.56.11 Netzmaske: 255.255.255.0 Bindungsmodus: Modus = 1 primäre Netzwerkkarte: keine ---------------------------------------------- Bitte stellen Sie sicher, dass es in Ordnung ist[y/n]:y Wie oben erwähnt, werden Sie während der Verwendung des Skripts aufgefordert, den Namen der zu bindenden Subnetzkarte, den Namen der gebundenen Netzwerkkarte, die IP-Adresse und Subnetzmaske sowie den Bindungsmodus einzugeben und anzugeben, ob die primäre Netzwerkkarte angegeben werden soll. Außerdem werden die verfügbaren Netzwerkkarten im System aktiv identifiziert und aufgelistet, damit der Benutzer sie auswählen kann. Gleichzeitig wird die Richtigkeit der eingegebenen Informationen beurteilt, um eine reibungslose Bindung der dualen Netzwerkkarten sicherzustellen. 3. Gebrauchsanweisung Laden Sie zunächst das Skript in ein beliebiges Verzeichnis auf dem Linux-System hoch und führen Sie es als Root-Benutzer aus: [root@node1 tmp]# sh bonding_v2.0.sh ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- 4 Netzwerkkarten verfügbar: eth0 eth1 eth2 eth3 ---------------------------------------------- Bitte geben Sie die erste Netzwerkkarte ein:_ Zunächst listet das Skript die Anzahl der im System verfügbaren Netzwerkkarten auf und fordert Sie auf, den Namen der ersten anzubindenden Subnetzkarte einzugeben. Geben Sie hier eth2 ein. Sie müssen sich keine Sorgen über Eingabefehler, doppelte Eingaben usw. machen. Das Skript prüft automatisch, ob Ihre Eingabeinformationen korrekt sind. ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- 4 Netzwerkkarten verfügbar: eth0 eth1 eth2 eth3 Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth2 ---------------------------------------------- Bitte wählen Sie die zweite Netzwerkkarte:_ Anschließend gibst du den Namen der zweiten anzubindenden Netzwerkkarte ein, eth3. Bei einer falschen Eingabe erscheint eine entsprechende Eingabeaufforderung. Bei einer falschen Eingabe von eth8 wirst du beispielsweise zu einer erneuten Eingabe aufgefordert: ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- 4 Netzwerkkarten verfügbar: eth0 eth1 eth2 eth3 Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth2 ---------------------------------------------- eth8 ist nicht verfügbar, bitte geben Sie ein anderes ein. Bitte wählen Sie die zweite Netzwerkkarte:_ Nachdem Sie die zweite Netzwerkkarte eth3, die gebunden werden muss, korrekt eingegeben haben, lautet der Standardname der ersten gebundenen Netzwerkkarte bond0, wenn zuvor keine gebundene Netzwerkkarte im Linux-System vorhanden war. Wenn im System eine gebundene Netzwerkkarte vorhanden ist, werden Sie vom Skript aufgefordert, bondN einzugeben (N ist eine Zahl): ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth2 Zweite Netzwerkkarte: eth3 Anleihenname: bond0 ---------------------------------------------- Der standardmäßige erste Anleihenname ist --bond0. Bitte geben Sie eine IP-Adresse ein:_ Folgen Sie den Anweisungen, um die IP-Adresse einzugeben, die Sie binden möchten, z. B. 10.1.1.1 Das Skript ermittelt automatisch, ob das eingegebene IP-Adressformat und der Bereich korrekt sind, sodass Sie sich keine Sorgen über Eingabefehler machen müssen. ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth2 Zweite Netzwerkkarte: eth3 Anleihenname: bond0 IP-Adresse: 10.1.1.1 ---------------------------------------------- Bitte geben Sie die NETMASK[255.255.255.0]:_ ein. Nach der Eingabe der IP-Adresse werden Sie aufgefordert, die Subnetzmaske einzugeben. Der Standardwert ist 255.255.255.0. Drücken Sie einfach die Eingabetaste. Sie können auch eine benutzerdefinierte Subnetzmaske eingeben. ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth2 Zweite Netzwerkkarte: eth3 Anleihenname: bond0 IP-Adresse: 10.1.1.1 Netzmaske: 255.255.255.0 ---------------------------------------------- Bitte geben Sie den Bonding-Modus ein [Standard: Modus = 1, Active-Backup]:_ In diesem Schritt geben Sie die Bindungsebene der Netzwerkkarte ein. Die Standardeinstellung ist der Master-Slave-Modus: mode=1. Drücken Sie einfach die Eingabetaste. Sie können auch eine benutzerdefinierte Bindungsebene eingeben (z. B. mode=6). Das Format ist: Modus = {0,1,2,3,4,5,6} ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth2 Zweite Netzwerkkarte: eth3 Anleihename: bond0 IP-Adresse: 10.1.1.1 Netzmaske: 255.255.255.0 Bindungsmodus: Modus = 1 ---------------------------------------------- 1-eth2 2-eth3 3-keine Wählen Sie, ob die primäre Netzwerkkarte eingerichtet werden soll oder nicht [Standard: 3-keine]:_ Zu diesem Zeitpunkt fragt das Skript, ob eine primäre Netzwerkkarte eingerichtet werden soll. Die Funktion der primären Netzwerkkarte besteht darin, dass die primäre Netzwerkkarte vorrangig aktiv ist, wenn alle untergeordneten Netzwerkkarten normal sind. Standardmäßig wird hier keine primäre Netzwerkkarte eingerichtet. Sie können auch die Nummer 1 oder 2 eingeben, um eine Netzwerkkarte als primäre Netzwerkkarte auszuwählen. ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Die von Ihnen eingegebenen Informationen: Erste Netzwerkkarte: eth2 Zweite Netzwerkkarte: eth3 Anleihename: bond0 IP-Adresse: 10.1.1.1 Netzmaske: 255.255.255.0 Bindungsmodus: Modus = 1 primäre Netzwerkkarte: keine ---------------------------------------------- Bitte stellen Sie sicher, dass es in Ordnung ist[j/n]:_ An diesem Punkt wurden alle Informationen eingegeben. Das Skript fragt Sie, ob alle eingegebenen Informationen korrekt sind. Wenn dies der Fall ist, geben Sie „y“ ein und fahren Sie mit dem nächsten Schritt fort. Andernfalls geben Sie „n“ ein und geben Sie die obigen Informationen erneut ein. ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Vollständig! Dateisicherungsverzeichnis: /etc/sysconfig/network-scripts/inspur_bak Sie können die Datei überprüfen und anschließend den Netzwerkdienst neu starten. 1) Neustart des Servicenetzwerks 2) Ausfahrt ---------------------------------------------- Bitte treffen Sie Ihre Wahl:_ Wenn Sie dies sehen, wurden alle an die Netzwerkkarte gebundenen Konfigurationsdateien geändert. Geben Sie 1 ein, um den Netzwerkdienst neu zu starten; geben Sie 2 ein, um das Skript direkt zu beenden. Es wird empfohlen, den Netzwerkdienst neu zu starten. Wenn Sie das Skript direkt beenden, ohne den Netzwerkdienst neu zu starten, wird die geänderte Konfigurationsdatei nicht wirksam und die angezeigten Informationen sind abnormal, wenn Sie das Skript zum Erstellen der nächsten gebundenen Netzwerkkarte verwenden (da das Skript die aktuellen Netzwerkkarteninformationen über den Befehl ifconfig erhält). Sie können die Datei überprüfen und anschließend den Netzwerkdienst neu starten. 1) Neustart des Servicenetzwerks 2) Ausfahrt ---------------------------------------------- Bitte treffen Sie Ihre Wahl:1 Schnittstelle eth0 wird heruntergefahren: [ OK ] Schnittstelle eth1 wird heruntergefahren: [ OK ] Schnittstelle eth2 wird heruntergefahren: [ OK ] Schnittstelle eth3 wird heruntergefahren: [ OK ] Loopback-Schnittstelle herunterfahren: [OK] Loopback-Schnittstelle öffnen: [OK] Popup-Schnittstelle bond0: RTNETLINK antwortet: Datei existiert Fehler beim Hinzufügen der Adresse 10.1.1.1 auf Bond0. [Sicher] Popup-Schnittstelle eth0: [OK] Popup-Schnittstelle eth1: [OK] Wenn Sie den Netzwerkdienst zum ersten Mal neu starten, wird möglicherweise eine Fehlermeldung ähnlich der oben angezeigt. Keine Sorge, die Konfiguration ist tatsächlich abgeschlossen. Starten Sie den Netzwerkdienst erneut und er wird wieder normal funktionieren. Die während des Bindungsprozesses geänderten Konfigurationsdateien sind wie folgt: [root@node1 tmp]# cd /etc/sysconfig/network-scripts/ [root@node1 Netzwerkskripte]# cat ifcfg-bond0 GERÄT=Bindung0 BOOTPROTO=keine ONBOOT=ja TYP=Ethernet USERCTL=nein IPV6INIT=nein PEERDNS=ja IPADDR=10.1.1.1 NETMASK=255.255.255.0 BONDING_OPTS="miimon=100 Modus=1" [root@node1 Netzwerkskripte]# cat ifcfg-eth2 GERÄT=eth2 BOOTPROTO=keine #HWADDR=08:00:27:41:b4:16 ONBOOT=ja TYP=Ethernet USERCTL=nein IPV6INIT=nein PEERDNS=ja SLAVE=ja MASTER=Bindung0 [root@node1 Netzwerkskripte]# cat ifcfg-eth3 GERÄT=eth3 BOOTPROTO=keine #HWADDR=08:00:27:6c:3d:0c ONBOOT=ja TYP=Ethernet USERCTL=nein IPV6INIT=nein PEERDNS=ja SLAVE=ja MASTER=Bindung0 [root@node1 Netzwerkskripte]# cat /etc/modprobe.conf Alias SCSI-Hostadapter ATA_PIIX Alias scsi_hostadapter1 ahci Alias net-pf-10 aus Alias IPv6 aus Optionen IPv6 deaktivieren = 1 Alias SND-Karte-0 SND-Intel8x0 Optionen SND-Karte-0 Index = 0 Optionen snd-intel8x0 Index = 0 snd-intel8x0 entfernen { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-intel8x0 Alias eth0 e1000 Alias eth1 e1000 Alias eth2 e1000 Alias eth3 e1000 Alias bond0 Bindung Die Netzwerkkonfigurationsinformationen lauten wie folgt: [root@node1 tmp]# ifconfig bond0 Link encap:Ethernet HWaddr 08:00:27:41:B4:16 Inet-Adresse: 10.1.1.1 Bcast: 10.1.1.255 Maske: 255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metrik:1 RX-Pakete:1197 Fehler:0 verloren:0 Überläufe:0 Frame:0 TX-Pakete: 125 Fehler: 0 verloren: 0 Überläufe: 0 Träger: 0 Kollisionen:0 txqueuelen:0 RX-Bytes: 106338 (103,8 KiB) TX-Bytes: 16662 (16,2 KiB) eth0 Link encap:Ethernet HWaddr 08:00:27:35:B4:81 Inet-Adresse: 192.168.56.11 Bcast: 192.168.56.255 Maske: 255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete:1487 Fehler:0 verloren:0 Überläufe:0 Frame:0 TX-Pakete: 1190 Fehler: 0 verloren: 0 Überläufe: 0 Träger: 0 Kollisionen:0 txqueuelen:1000 RX-Bytes: 146576 (143,1 KiB) TX-Bytes: 151787 (148,2 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:72:08:46 Inet-Adresse: 10.1.1.11 Bcast: 10.1.1.255 Maske: 255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX-Pakete: 193 Fehler: 0 verloren: 0 Überläufe: 0 Frame: 0 TX-Pakete: 455 Fehler: 0 verloren: 0 Überläufe: 0 Träger: 0 Kollisionen:0 txqueuelen:1000 RX-Bytes: 31434 (30,6 KiB) TX-Bytes: 22657 (22,1 KiB) eth2 Link encap:Ethernet HWaddr 08:00:27:41:B4:16 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metrik:1 RX-Pakete: 591 Fehler: 0 verloren: 0 Überläufe: 0 Frame: 0 TX-Pakete:93 Fehler:0 verloren:0 Überläufe:0 Träger:0 Kollisionen:0 txqueuelen:1000 RX-Bytes: 55217 (53,9 KiB) TX-Bytes: 10511 (10,2 KiB) eth3 Link encap:Ethernet HWaddr 08:00:27:41:B4:16 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metrik:1 RX-Pakete: 606 Fehler: 0 verloren: 0 Überläufe: 0 Frame: 0 TX-Pakete: 32 Fehler: 0 verloren: 0 Überläufe: 0 Träger: 0 Kollisionen:0 txqueuelen:1000 RX-Bytes: 51121 (49,9 KiB) TX-Bytes: 6151 (6,0 KiB) lo Link encap: Lokaler Loopback inet-Adresse:127.0.0.1 Maske:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metrik:1 RX-Pakete: 3297 Fehler: 0 verloren: 0 Überläufe: 0 Frame: 0 TX-Pakete: 3297 Fehler: 0 verloren: 0 Überläufe: 0 Träger: 0 Kollisionen:0 txqueuelen:0 RX-Bytes: 4725726 (4,5 MiB) TX-Bytes: 4725726 (4,5 MiB) Informationen zur Bindung von Dual-Netzwerkkarten: [root@node1 tmp]# cat /proc/net/bonding/bonding0 Ethernet Channel Bonding-Treiber: v3.4.0-2 (7. Oktober 2008) Bonding-Modus: Fehlertoleranz (aktive Sicherung) Primärer Slave: Keiner Derzeit aktiver Slave: eth2 MII-Status: nach oben MII-Polling-Intervall (ms): 100 Verzögerung beim Hochfahren (ms): 0 Down-Verzögerung (ms): 0 Slave-Schnittstelle: eth2 MII-Status: nach oben Geschwindigkeit: 1000 Mbit/s Duplex: voll Anzahl der Verbindungsfehler: 0 Permanente HW-Adresse: 08:00:27:41:b4:16 Slave-Schnittstelle: eth3 MII-Status: nach oben Geschwindigkeit: 1000 Mbit/s Duplex: voll Anzahl der Verbindungsfehler: 0 Permanente HW-Adresse: 08:00:27:6c:3d:0c 4. Skriptcode #!/bin/bash # Datum:26.11.2018 14:28:45 # Autor:ZhangJian # Mail:[email protected] # Func:Netzwerkbündelung konfigurieren # Version:2.0 #Versionsaktualisierung V1.6: Der Bonding-Modus mode=x wird nicht mehr in die Datei modprobe.conf geschrieben, sondern in ifcfg-bond, da bei einer Änderung des Modus in der Datei modprobe.conf ein Neustart des Netzwerkdienstes möglicherweise nicht wirksam ist. #Versionsupdate V2.0: Legen Sie die primäre Netzwerkkarte als optionales Element fest. Trap "tput clear;tput cup 3;echo 'Bei Fragen: Senden Sie eine Nachricht an QQ 1037509307.';tput cup 6;exit" 2 3 wenn [[ -n $1 ]]; dann Katze <<EOF Netzwerkkonfigurations-Assistent --- Netzwerkbindung konfigurieren v1.5 Verwendung: sch $0 chmod +x $0 && ./$0 Ende der Laufzeit Ausfahrt 0 fi wenn [[ $UID -ne 0 ]]; dann tput klar tput tasse 6 20 echo -e "Sie müssen den Benutzer verwenden: \033[31mROOT\033[0m" tput tasse 10 Ausfahrt fi FEHLER(){ tput Tasse $1 $2;tput ed echo „Eingabefehler. Bitte versuchen Sie es noch einmal.“ echo -e 'Drücken Sie die Eingabetaste, um fortzufahren..._\b\c' EingangA lesen } Check_BakFile(){ #Dateisicherungsfunktion#Verwendung: #Check_BakFile Der Name der zu sichernden Datei, das Sicherungsverzeichnis -x (in welchem Zeitformat gesichert werden soll) Fall ${3} in -d ) #Tägliches Backup Bak_Date=`date '+%Y-%m-%d'` ;; -H ) #Stündliches Backup Bak_Date=`date '+%Y-%m-%d_%H'` ;; -M) #Sicherung nach Minute Bak_Date=`date '+%Y-%m-%d_%H:%M'` ;; -m) #Monatliches Backup Bak_Date=`date '+%Y-%m'` ;; -Y ) #Jährliches Backup Bak_Date=`date '+%Y'` ;; * ) #Standardmäßige Sicherung nach Minute Bak_Date=`date '+%Y-%m-%d_%H:%M'` ;; esac #Bak_Date=`Datum '+%Y-%m-%d-%H:%M'` [[ -d ${2}/${Bak_Date} ]] || mkdir -p ${2}/${Bak_Date} cp -ra ${1} ${2}/${Bak_Date} } Bindung_vor(){ #Führende Funktion zur Bindung zweier Netzwerkkarten, bestimmt die Legitimität der Netzwerkkarte, IP usw. und leitet den Benutzer zur korrekten Eingabe der Parameter an. #Alle echten Netzwerkkarten NIC_NAME_all=`ifconfig -a | awk '/\<Ethernet\>/ {print $1}' | grep -wEv '^bond[0-9]+'` #Vorhandene verbundene Netzwerkkarte NIC_NAME_bond=`ifconfig -a | awk '/^\<bond[0-9]+\>/ {print $1}'` #Drucken Sie die Netzwerkkarte aus, die bereits ein SLAVE ist NIC_NAME_slave=`ifconfig -a | sed -n '/SLAVE/{g;1!p;};h' | awk '{print $1}'` NIC_NAME_slave=${NIC_NAME_slave:=NULL} #Drucken Sie die verfügbaren Netzwerkkarten aus NIC_NAME_free=`echo "$NIC_NAME_all" | grep -Fwv "$NIC_NAME_slave"` #Anzahl verfügbarer Netzwerkkarten NIC_NAME_free_nu=`echo "$NIC_NAME_free" | wc -w` deklarieren -a NIC_LIST NIC_LIST=($NIC_NAME_frei) info_drucken(){ tput klar; tput Tasse 2 Katze <<EOF ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Ende der Laufzeit tput tasse 7 wenn [[ -n ${1} ]]; dann echo -e "Bereits vorhandenes Channel Bonding Interface des Systems:\n\033[31m${1}\033[0m\n" fi } wenn [[ "$NIC_NAME_free_nu" -gt 1 ]]; dann info_drucken echo -e "\033[031m$NIC_NAME_free_nu\033[0m Netzwerkkarten verfügbar:" echo -e "\033[31m${NIC_LIST[@]}\033[0m" echo -e "----------------------------------------------\n" #Geben Sie den Namen der ersten Netzwerkkarte ein, solange true ist. echo -e "\nBitte geben Sie die erste Netzwerkkarte ein:_\b\c" NIC1 lesen echo ${NIC_LIST[@]} | grep -Fw "$NIC1" &> /dev/null wenn [[ $? -eq 0 ]]; dann info_drucken echo -e "\033[031m$NIC_NAME_free_nu\033[0m Netzwerkkarten verfügbar:\n\033[31m${NIC_LIST[@]}\033[0m" echo -e "\nDie von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: $NIC1" echo -e "----------------------------------------------\n" brechen anders info_drucken echo -e "\033[031m$NIC_NAME_free_nu\033[0m Netzwerkkarten verfügbar:\n\033[31m${NIC_LIST[@]}\033[0m" echo -e "----------------------------------------------\n" echo -e "\033[31m${NIC1}\033[0m ist nicht verfügbar, bitte geben Sie einen anderen ein." fi Erledigt #Geben Sie den Namen der zweiten Netzwerkkarte ein, während true; echo -e "\nBitte wählen Sie die zweite Netzwerkkarte:_\b\c" NIC2 lesen wenn [[ ${NIC1} != ${NIC2} ]]; dann echo ${NIC_LIST[@]} | grep -Fw "${NIC2}" &> /dev/null wenn [[ $? -eq 0 ]]; dann info_print "${NIC_NAME_bond}" echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}" echo -e "----------------------------------------------\n" brechen anders info_drucken echo -e "\033[031m$NIC_NAME_free_nu\033[0m Netzwerkkarten verfügbar:\n\033[31m${NIC_LIST[@]}\033[0m\n\nDie von Ihnen eingegebenen Informationen:\nErste NIC: ${NIC1}" echo -e "----------------------------------------------\n" echo -e "\033[31m${NIC2}\033[0m ist nicht verfügbar, bitte geben Sie einen anderen ein." fi anders info_drucken echo -e "\033[031m${NIC_NAME_free_nu}\033[0m Netzwerkkarten verfügbar:\n\033[31m${NIC_LIST[@]}\033[0m\n\nDie von Ihnen eingegebenen Informationen:\nErste NIC: ${NIC1}" echo -e "----------------------------------------------\n" echo -e "\033[31m${NIC2}\033[0m ist die erste Netzwerkkarte. Bitte geben Sie eine andere ein." fi Erledigt #Geben Sie den gebundenen NIC-Namen ein und führen Sie eine Plausibilitätsprüfung durch, wenn [[ -z ${NIC_NAME_bond} ]]; dann NAME_Bindung=Bindung0 info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}" echo -e "----------------------------------------------\n" echo "Der standardmäßige erste Anleihename ist -- bond0." anders während wahr; tun echo -e "\nBitte geben Sie einen Anleihenamen ein[bonN]:_\b\c" NAME_Bond lesen #Überprüfen Sie, ob das Eingabeformat das Anleihen+Zahlen-Format ist. echo "${NAME_bond}" | grep -wE '^bond[[:digit:]]+$' &> /dev/null wenn [[ $? -eq 0 ]]; dann echo "${NIC_NAME_bond}" | grep -Fw "${NAME_bond}" &> /dev/null wenn [[ $? -ne 0 ]]; dann info_print "${NIC_NAME_bond}" echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}" echo -e "----------------------------------------------\n" brechen anders info_print "${NIC_NAME_bond}" echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}" echo -e "----------------------------------------------\n" echo "Sie können keinen vorhandenen Namen verwenden: ${NAME_bond}" echo -e "\033[31m${NAME_bond}\033[0m ist nicht verfügbar. Bitte geben Sie einen anderen ein, z. B. -- bondN." fi anders info_print "${NIC_NAME_bond}" echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}" echo -e "----------------------------------------------\n" echo -e "\033[31m${NAME_bond}\033[0m ist nicht verfügbar. Bitte geben Sie einen anderen ein, z. B. -- bondN." fi Erledigt fi #IP-Adresse festlegen, solange wahr; echo -e "\nBitte geben Sie eine IP-Adresse ein:_\b\c" IP_Bond lesen echo "${IP_bond}" | grep -owE '^(([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5]{2})\.){3}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5]{2})$' &> /dev/null wenn [[ $? -eq 0 ]]; dann info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}" echo -e "----------------------------------------------\n" brechen anders info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}" echo -e "----------------------------------------------\n" echo -e "IP-Adresse: \033[31m${IP_bond}\033[0m Formatfehler, bitte erneut eingeben." fi Erledigt #Netzmaske festlegen während wahr; tun echo -e "\nBitte geben Sie die NETMASK[255.255.255.0]:_\b\c ein" NETMASK_bond lesen NETMASK_bond=${NETMASK_bond:="255.255.255.0"} #Wenn die Variable NETMASK_bond leer ist, weisen Sie ihr den Standardwert 255.255.255.0 zu echo "$NETMASK_bond" | grep -owE '^(128|192|224|240|248|252|254|255)\.((0|128|192|224|240|248|252|254|255)\.){2}(0|128|192|224|240|248|252|254|255)$' &> /dev/null wenn [[ $? -eq 0 ]]; dann info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}\nNetzmaske: ${NETMASK_bond}" echo -e "----------------------------------------------\n" brechen anders info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}" echo -e "----------------------------------------------\n" echo -e "Eingabefehler.\nBitte geben Sie die richtige NETMASK ein oder drücken Sie die Eingabetaste, um 255.255.255.0 zu verwenden.\n" fi Erledigt #:<<!zhushi! #Batch-Kommentare, wenn Batch-Kommentare aktiviert sind, ist der Standardmodus = 1 während wahr; tun echo -e "\nBitte geben Sie den Bonding-Modus ein [Standard: Modus = 1, Active-Backup]:_\b\c" mode_bond lesen mode_bond=${mode_bond:="mode=1"} #Wenn die Variable mode_bond leer ist, weisen Sie ihr den Standardwert 1 zu wenn [[ ! ${mode_bond} =~ "mode=[0-6]" ]]; dann info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}\Netzmaske: ${NETMASK_bond}" echo -e "----------------------------------------------\n" echo "Ungültige Antwort: ${mode_bond}" echo "Beispiel: mode={0,1,2,3,4,5,6}" anders info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\n" echo -e "Erste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}\nNetzmaske: ${NETMASK_bond}\nBonding-Modus: ${mode_bond}" echo -e "----------------------------------------------\n" brechen fi Erledigt #!zhushi! #Wählen Sie, ob die primäre Netzwerkkarte bei true gesetzt werden soll; tun Sie dies echo "1-${NIC1}" echo "2-${NIC2}" echo "3-keine" echo -e "Wählen Sie, ob die primäre Netzwerkkarte eingerichtet werden soll oder nicht [Standard: 3-keine]:_\b\c" get_primary_NIC lesen get_primary_NIC=${get_primary_NIC:="keine"} Fall ${get_primary_NIC} in 1) get_primary_NIC=${NIC1} #echo "--$get_primary_NIC" brechen ;; 2) get_primary_NIC=${NIC2} #echo "--$get_primary_NIC" brechen ;; 3) get_primary_NIC=keine #echo "--$get_primary_NIC" brechen ;; keine ) brechen ;; * ) #echo "--$get_primary_NIC" info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\nErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}\nNetzmaske: ${NETMASK_bond}" echo -e "----------------------------------------------\n" echo "Ungültige Antwort: ${get_primary_NIC}" echo "Bitte geben Sie eine Zahl in {1,2,3} ein oder drücken Sie die EINGABETASTE, um keine primäre Netzwerkkarte einzurichten." weitermachen ;; esac info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\n" echo -e "Erste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}\nNetzmaske: ${NETMASK_bond}\nBonding-Modus: ${mode_bond}\nPrimäre Netzwerkkarte: ${get_primary_NIC}" echo -e "----------------------------------------------\n" brechen Erledigt #Zuletzt Informationen zur Bestätigung eingeben, while true; do info_drucken echo -e "Die von Ihnen eingegebenen Informationen:\n" echo -e "\033[31mErste Netzwerkkarte: ${NIC1}\nZweite Netzwerkkarte: ${NIC2}\nBond-Name: ${NAME_bond}\nIP-Adresse: ${IP_bond}\nNetzmaske: ${NETMASK_bond}\nBonding-Modus: ${mode_bond}\nPrimäre Netzwerkkarte: ${get_primary_NIC}\033[0m" echo -e "----------------------------------------------\n" echo -e "Bitte stellen Sie sicher, dass es in Ordnung ist[j/n]:_\b\c" Eingabe lesen Fall ${input} in [Yy]|[Yy][Ee][Ss] ) Bindung "$NIC1" "$NIC2" "$NAME_bond" "$IP_bond" "$NETMASK_bond" brechen ;; [Nn]|[Nn][Oo] ) bindung_vor ;; * ) tput Tasse 7;tput ed FEHLER 7 10 ;; esac Erledigt anders info_drucken echo -e "Sie haben \033[031m${NIC_NAME_free_nu}\033[0m Netzwerkkarten verfügbar:\n" #Markieren Sie den hervorgehobenen „NIC-Namen“ rot echo -e "\033[31m${NIC_LIST[@]}\033[0m\n" echo -e "Es sind \033[31mnicht genug\033[0m Netzwerkkarten vorhanden, um eine Verbindung herzustellen" echo -e "Bitte überprüfen Sie es...\n" echo -e 'Zum Beenden die Eingabetaste drücken..._\b\c' Antwort lesen Ausfahrt 1 fi } Bindung(){ wenn [[ $# -lt 5 ]] Dann echo 'Bindung fehlgeschlagen! Bitte geben Sie genügend Informationen an!' echo -e "\nVerwendung:\n sh bonding.sh <NIC1_name> <NIC2_name> <bond_name> <IP> <NETMASK>\n\n" Ausfahrt 1 fi #Gerätenamen und IP-Informationen abrufen SLAVE1_DEV="$1" #SLAVE1_DEV=ethx SLAVE2_DEV="$2" #SLAVE2_DEV=ethx BOND_DEV="$3" #BOND_DEV=bondx SLAVE1=ifcfg-"$1" SLAVE2=ifcfg-"$2" BOND=ifcfg-"$3" BOND_IPADDR="$4" BOND_NETMASK="$5" BOND_DIR=/etc/sysconfig/Netzwerkskripte wenn [ -e $BOND_DIR/$BOND ] Dann echo $BOND_DIR/$BOND ist bereits vorhanden anders #Dateisicherung Check_BakFile "${BOND_DIR}/ifcfg-*" "${BOND_DIR}/inspur_bak" "-M" #Mac-Adresse abrufen SLAVE1_MAC=`grep 'HWADDR' ${BOND_DIR}/${SLAVE1}` SLAVE2_MAC=`grep 'HWADDR' ${BOND_DIR}/${SLAVE2}` # $BOND ändern berühren Sie $BOND_DIR/$BOND echo "GERÄT=${BOND_DEV}" >> $BOND_DIR/$BOND echo "BOOTPROTO=keine" >> $BOND_DIR/$BOND echo "ONBOOT=yes" >> $BOND_DIR/$BOND echo "TYPE=Ethernet" >> $BOND_DIR/$BOND echo "USERCTL=nein" >> $BOND_DIR/$BOND echo "IPV6INIT=nein" >> $BOND_DIR/$BOND echo "PEERDNS=yes" >> $BOND_DIR/$BOND echo "IPADDR=${BOND_IPADDR}" >> $BOND_DIR/$BOND echo "NETMASK=${BOND_NETMASK}" >> $BOND_DIR/$BOND wenn [[ ${get_primary_NIC} == none ]]; dann echo "BONDING_OPTS=\"miimon=100 ${mode_bond}\"" >> $BOND_DIR/$BOND anders echo "BONDING_OPTS=\"miimon=100 ${mode_bond} primär=$(echo ${SLAVE1} | cut -d'-' -f2)\"" >> $BOND_DIR/$BOND fi # $SLAVE1 ändern > $BOND_DIR/$SLAVE1 echo "GERÄT=${SLAVE1_DEV}" >> $BOND_DIR/$SLAVE1 echo 'BOOTPROTO=keine' >> $BOND_DIR/$SLAVE1 #cat $BOND_DIR/../ifcfg-bak/$SLAVE1 |grep HWADDR >> $BOND_DIR/$SLAVE1 echo "#$SLAVE1_MAC" >> $BOND_DIR/$SLAVE1 echo ONBOOT=yes >> $BOND_DIR/$SLAVE1 echo TYPE=Ethernet >> $BOND_DIR/$SLAVE1 echo USERCTL=nein >> $BOND_DIR/$SLAVE1 echo IPV6INIT=nein >> $BOND_DIR/$SLAVE1 echo PEERDNS=yes >> $BOND_DIR/$SLAVE1 echo SLAVE=ja >> $BOND_DIR/$SLAVE1 echo MASTER=$BOND_DEV >> $BOND_DIR/$SLAVE1 # SLAVE2 ändern > $BOND_DIR/$SLAVE2 echo "GERÄT=$SLAVE2_DEV" >> $BOND_DIR/$SLAVE2 echo BOOTPROTO=keine >> $BOND_DIR/$SLAVE2 #cat $BOND_DIR/../ifcfg-bak/$SLAVE2 |grep HWADDR >> $BOND_DIR/$SLAVE2 echo "#$SLAVE2_MAC" >> $BOND_DIR/$SLAVE2 echo ONBOOT=yes >> $BOND_DIR/$SLAVE2 echo TYPE=Ethernet >> $BOND_DIR/$SLAVE2 echo USERCTL=nein >> $BOND_DIR/$SLAVE2 echo IPV6INIT=nein >> $BOND_DIR/$SLAVE2 echo PEERDNS=yes >> $BOND_DIR/$SLAVE2 echo SLAVE=ja >> $BOND_DIR/$SLAVE2 echo MASTER=$BOND_DEV >> $BOND_DIR/$SLAVE2 [[ -e /etc/modprobe.conf.bak ]] && cp /etc/modprobe.conf /etc/modprobe.conf.bak.new || cp /etc/modprobe.conf /etc/modprobe.conf.bak echo "alias $BOND_DEV bonding" >> /etc/modprobe.conf während wahr; tun tput klar; tput Tasse 2 Katze <<EOF ---------------------------------------------- ------ Netzwerkkonfigurationsassistent ------ ---------------------------------------------- Vollständig! Dateisicherungsverzeichnis: ${BOND_DIR}/inspur_bak Sie können die Datei überprüfen und anschließend den Netzwerkdienst neu starten. 1) Neustart des Servicenetzwerks 2) Ausfahrt ---------------------------------------------- Ende der Laufzeit echo -e "Bitte treffen Sie Ihre Wahl:_\b\c" Antwort lesen Fall ${answer} in 1) Neustart des Dienstnetzwerks Ausfahrt 0 ;; 2) Ausfahrt 0 ;; esac Erledigt fi } hauptsächlich(){ während wahr; tun bindung_vor Erledigt } Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erläuterung der Vorverarbeitungsmethode für WeChat-Applet-Anforderungen
>>: Grafisches Tutorial zur Installation der dekomprimierten Version von mysql5.7.14
Die CSS-Technik zum Ändern der Farbe eines Bildes...
Inhaltsverzeichnis Wie wird das SQL-Protokoll ang...
MySQL-Installation (4, 5, 6 können weggelassen we...
> MySQL 5.7 Cluster Master und Slave bereitste...
Das Einrichten des Fernzugriffs in mysql5.7 funkt...
Es gibt drei Möglichkeiten, CSS einzuführen: Inli...
Inhaltsverzeichnis 1. ACID-Eigenschaften Syntax d...
Vorwort Dieser Artikel beschreibt zwei Situatione...
Laden Sie das Java Development Kit jdk herunter D...
Schritte: 1. MySQL-Datenbank installieren 1. Lade...
<br />Es ist nicht länger als zwei Jahre her...
Methode 1: INSERT INTO t1(Feld1,Feld2) VALUE(v001...
Inhaltsverzeichnis einführen Link Start Gehen Sie...
Wenn vue2 Zeitstempel konvertiert, verwendet es i...
Öffnen Sie das Verbindungstool. Ich verwende Moba...