Es gibt mehrere Möglichkeiten, die IP-Adresse und den Hostnamen Ihres Ubuntu-Computers zu verwalten. Systemadministratoren haben die nmcli-, netplan-, hostname- und hostnamectl-Tools zur Verfügung. Während diese Tools an sich gut funktionieren, wie können Sie diese Tools einbeziehen, um Ihr Automatisierungsspiel zu verbessern?
Sie können ein Bash-Skript erstellen, das die Konfiguration für Sie übernimmt. In diesem Artikel erfahren Sie, wie Sie mit einem Bash-Skript, das Eingaben akzeptiert, einen neuen Hostnamen festlegen und IP-Adressinformationen konfigurieren.
Jedes Beispiel wird auf dem vorherigen aufbauen. Am Ende des Artikels werden Sie über das erforderliche Wissen verfügen, um ein voll funktionsfähiges Konfigurationsskript in Bash für die Verwendung auf einem neuen oder vorhandenen Ubuntu-Host zu erstellen.
Voraussetzungen
Sie müssen kein Experte für Bash-Shell-Skripting sein, um diesem Tutorial zu folgen, aber stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen.
- A host running on Ubuntu. This tutorial uses Ubuntu 22.04 LTS.
- Root-Berechtigungen für den Ubuntu-Host.
- A text editor, such as
vim
,nano
, or VSCode.
Festlegen des Hostnamens mit hostnamectl
Jeder Host sollte einen eindeutigen Namen haben. Mit dem hostnamectl-Befehl können Sie den Hostnamen abfragen oder ändern. In diesem Fall lautet die Syntax wie folgt, um Ihren aktuellen Hostnamen in den gewünschten zu ändern.
Das Ausführen des Befehls `hostnamectl` mit dem allgemeinen Parameter `set-hostname`, gefolgt von einem Zeichenfolgenwert in doppelten Anführungszeichen als neuen Hostnamen. Wenn Sie diesen Befehl manuell ausführen, sollte er ohne Probleme funktionieren.
Aber was ist, wenn Sie dies in ein Skript einfügen möchten, das Benutzereingaben akzeptiert? Beginnen Sie mit dem read-Befehl, gefolgt vom Parameter `-p`, der für Prompt steht, und einer Zeichenfolge, um einem Benutzer mitzuteilen, was für diesen Prompt eingegeben werden soll. Sie speichern dann die Eingabe in einer neuen Variablen namens NEW_HOSTNAME.
Sobald der Hostname in der Variablen NEW_HOSTNAME gespeichert ist, können Sie die Variable dem Befehl `hostnamectl` wie im folgenden Beispiel übergeben.
Und das war’s! Durch die Kombination dieser beiden Einzeiler können die Befehle in einem Skript funktionieren! Aber Sie haben eine zusätzliche Aufgabe: die Konfiguration der Netzwerkoptionen.
Setzen der IP-Adressinformationen mit netplan
Der netplan-Befehl ist die de facto Methode zur Verwaltung der IP-Adressinformationen einer Netzwerkschnittstelle für moderne Ubuntu-Hosts. Das netplan-Tool abstrahiert Netzwerkkonfigurationen von verschiedenen Backends unter Verwendung von YAML-Konfigurationsdateien.
Das netplan-Tool liest diese Konfigurationsdateien beim Systemstart und wendet sie auf die Zielnetzwerkschnittstelle(n) an. Warum ist das wichtig, werden Sie vielleicht fragen?
Die Konfiguration Ihres Netzwerks in YAML ermöglicht es Ihnen, mit dem Speichern oder Sichern Ihrer Konfiguration in einem Git-Repository zu beginnen. Da Git Funktionen zur Änderungsverfolgung bietet, können Sie dieselbe Konfigurationsdatei verwenden, ohne sie für zukünftige Bereitstellungen über CI/CD-Pipelines neu erstellen zu müssen. Sie kennen das, DevOps!
Bevor Sie Zeilen zu einer Konfigurationsdatei hinzufügen, müssen Sie die Konfigurationsdatei mit dem touch-Befehl erstellen.
Der obige Befehl platziert die neue Konfigurationsdatei in Ihrem Home-Verzeichnis. Von hier aus führen Sie den echo-Befehl aus, um das, was Sie tippen, zu echoen und dies Zeile für Zeile mithilfe der Eingabeumleitung für STDOUT > (hinzufügen) und >> (anhängen) in die Konfigurationsdatei einzufügen.
Hinweis: Verwenden Sie doppelte Leerzeichen und keine Tabs für die Einrückung in YAML.
Mit jedem Echo-Befehl erstellen Sie die YAML-Konfiguration mit angemessenem Abstand, indem Sie die Eingabe über STDOUT umleiten. Alternativ könnten Sie diese Datei manuell mit einem Texteditor erstellen. Aber Sie müssen die Datei nicht manuell erstellen.
Stattdessen fordern Sie den Benutzer auf, die für Sie erforderlichen IP-Adressinformationen mit dem gleichen read
-Befehl einzugeben.
Tipp: Eine Möglichkeit, alle Netzwerkschnittstelleninformationen auf Ubuntu aufzulisten, besteht darin, den Befehl ip address auszuführen.
Das ist besser. Sie können jetzt die Benutzereingabe wieder auf einige Variablen umleiten, die in einem Skript verwendet werden sollen.
Es gibt viele andere Eigenschaften, die Sie setzen können, die dieses Tutorial nicht im Detail behandelt. Wenn Sie zusätzliche häufige Eigenschaften sehen möchten, lesen Sie unbedingt die Netplan-Man-Pages.
Mit den Netzwerkoptionen abgeschlossen, ist es Zeit, ein einzelnes Skript zu erstellen!
Alles in einem Bash-Skript zusammenfügen
Jetzt werden Sie alles in ein einziges Bash-Skript kombinieren, basierend auf dem, was Sie aus den vorherigen Abschnitten gelernt haben. Öffnen Sie Ihren Editor Ihrer Wahl, fügen Sie den folgenden Code ein und speichern Sie die Datei als ~/host_deploy.sh
.
Um das Skript auszuführen, führen Sie den folgenden Befehl aus, um das Skript mit bash
in Ihrem Terminal aufzurufen.
Das Skript fordert Sie auf, einen neuen Hostnamen und Informationen zur IP-Adresse einzugeben, und erinnert Sie daran, den Host neu zu starten, damit die Änderungen wirksam werden.
Jetzt, da Sie ein funktionierendes Skript in Ihrem Benutzerverzeichnis haben, könnten Sie ein goldenes Bild erstellen, um es wiederzuverwenden oder mit Technikern und denen, die diese Aufgabe routinemäßig ausführen, zu teilen.
Abschluss
Herzlichen Glückwunsch! Sie haben es bis zum Ende des Artikels geschafft und ein voll funktionsfähiges Bash-Skript erstellt, das Sie wiederholt verwenden können.
Sie könnten auch versuchen, dieses Skript mit Ansible zu verwenden und die Fragen mithilfe eines Ansible-Plays zu beantworten. Die Aufgaben in diesem Tutorial sind nur eine winzige Auswahl von anfänglichen Konfigurationspunkten, die Sie in Ihren Build- und Bereitstellungsskripten verwenden könnten.
Sie wissen jetzt, wie Sie Benutzereingaben akzeptieren, grundlegende Systemparameter mit einem Bash-Skript festlegen und diese Technik anwenden können, um Hostnamen und IP-Adressen in Ubuntu Linux zu ändern.
Source:
https://adamtheautomator.com/change-linux-ip-hostname-bash-script/