GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So aktualisieren Sie die Ubuntu-IP und den Hostnamen über Bash

Es gibt mehrere Möglichkeiten, die IP-Adresse und den Hostnamen Ihres Ubuntu-Computers zu verwalten. Systemadministratoren stehen die Tools nmcli, netplan, hostname und hostnamectl zur Verfügung. Auch wenn diese Tools für sich alleine schon gute Arbeit leisten, wie können Sie diese Tools integrieren, 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 einen neuen Hostnamen festlegen und IP-Adressinformationen konfigurieren, alles mit einem Bash-Skript, das Eingaben akzeptiert.

Jedes Beispiel baut auf dem anderen auf. Am Ende des Artikels verfügen Sie über das erforderliche Wissen, um ein voll funktionsfähiges Konfigurationsskript in Bash zur Verwendung auf einem neuen oder vorhandenen Ubuntu-Host zu erstellen.

Voraussetzungen

Sie müssen kein Experte für Bash-Shell-Scripting sein, um diesem Tutorial zu folgen, aber stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen.

  • Ein Host, der auf Ubuntu läuft. Dieses Tutorial verwendet Ubuntu 22.04 LTS.
  • Root-Rechte für den Ubuntu-Host.
  • Ein Texteditor wie vim , nano , oder VSCode .

Festlegen des Hostnamens mit hostnamectl

Jeder Host sollte einen eindeutigen Namen haben. Mit dem Befehl hostnamectl können Sie den Hostnamen abfragen oder ändern. In diesem Fall ist die Syntax wie unten gezeigt, um Ihren aktuellen Hostnamen nach Belieben zu ändern.

sudo hostnamectl set-hostname "new-hostname"

Ausführen des Befehls hostnamectl mit dem gemeinsamen Parameter set-hostname gefolgt von einem Zeichenfolgenwert in doppelten Anführungszeichen („“) als neuer Hostname. Wenn Sie diesen Befehl manuell ausgeführt haben, sollte er ohne Störungen funktionieren.

Aber was wäre, wenn Sie dies in ein Skript einbauen wollten, das Benutzereingaben akzeptiert? Beginnen Sie mit dem Lesebefehl, gefolgt vom Parameter -p, der für prompt, steht und eine Zeichenfolge, um einem Benutzer mitzuteilen, was er für diese Eingabeaufforderung eingeben soll. Anschließend speichern Sie die Eingabe in einer neuen Variablen namens NEW_HOSTNAME.

read -p "Please type the desired hostname: " NEW_HOSTNAME

Sobald der Hostname in der Variablen NEW_HOSTNAME gespeichert ist, können Sie die Variable wie im folgenden Beispiel für den Befehl hostnamectl bereitstellen.

sudo hostnamectl set-hostname "$NEW_HOSTNAME"

Und das ist es! Durch die Kombination dieser beiden Einzeiler können die Befehle in einem Skript funktionieren! Aber Sie haben noch eine zusätzliche Aufgabe:die Konfiguration der Netzwerkoptionen.

Einstellen der IP-Adressinformationen mit netplan

Der Befehl netplan ist de facto Methode zum Verwalten der IP-Adressinformationen einer Netzwerkschnittstelle für moderne Ubuntu-Hosts. Das Tool netplan abstrahiert Netzwerkkonfigurationen von verschiedenen Backends mithilfe von YAML-Konfigurationsdateien.

Das Tool netplan liest diese Konfigurationsdateien während des Systemstarts und wendet sie auf die Zielnetzwerkschnittstelle(n) an. Warum ist das wichtig, fragen Sie sich vielleicht?

Wenn Sie Ihre Netzwerkkonfiguration in YAML haben, können Sie damit beginnen, Ihre Konfiguration in einem Git-Repository zu speichern oder zu sichern. Und da Git Funktionen zur Änderungsverfolgung bietet, können Sie dieselbe Konfigurationsdatei verwenden, ohne sie für zukünftige Bereitstellungen mithilfe von CI/CD-Pipelines neu erstellen zu müssen. Sie wissen schon, DevOps!

Bevor Sie Zeilen zu einer Konfigurationsdatei hinzufügen, müssen Sie die Konfigurationsdatei mit dem touch-Befehl erstellen.

sudo touch ~/99-custom.yaml

Der obige Befehl legt die neue Konfigurationsdatei in Ihrem Home-Verzeichnis ab. Von hier aus führen Sie den echo-Befehl zu echo aus was Sie eingeben, und fügen Sie das Zeile für Zeile in die Konfigurationsdatei ein, indem Sie die Eingabeumleitung für STDOUT> (hinzufügen) und>> (anhängen).

verwenden

Hinweis:Verwenden Sie doppelte Leerzeichen und keine Tabulatoren zum Einrücken in YAML.

echo "network:" > ~/99-custom.yaml
echo "  ethernets:" >> ~/99-custom.yaml
echo "    enp0s31f6:" >> ~/99-custom.yaml
echo "      dhcp4: false" >> ~/99-custom.yaml
echo "      addresses:"
echo "       - [$IP_ADDRESS]" >> ~/99-custom.yaml
echo "      routes:"
echo "       - to: default"
echo "         via: $GATEWAY_ADDRESS" >> ~/99-custom.yaml
echo "      nameservers:" >> ~/99-custom.yaml
echo "        addresses: [$PRIMARY_DNS_ADDRESS, $SECONDARY_DNS_ADDRESS, 208.67.222.222, 208.67.220.220]" >> ~/99-custom.yaml
echo "  version: 2" >> ~/99-custom.yaml

Bei jedem echo-Befehl erstellen Sie die YAML-Konfiguration mit angemessenen Abständen, indem Sie Eingaben mit STDOUT umleiten. Alternativ können Sie diese Datei auch manuell mit einem Texteditor erstellen. Sie müssen die Datei jedoch nicht manuell erstellen.

Fordern Sie den Benutzer stattdessen auf, die benötigten IP-Adressinformationen mit demselben read einzugeben Befehl.

Tipp:Eine Möglichkeit, alle Netzwerkschnittstelleninformationen unter Ubuntu aufzulisten, besteht darin, den Befehl ip address auszuführen.

read -p "Now type the IP address in CIDR notation, i.e. 192.168.1.1/24: " IP_ADDRESS
read -p "The gateway IP: " GATEWAY_ADDRESS
read -p "The primary DNS IP: " PRIMARY_DNS_ADDRESS
read -p "And finally, the secondary DNS IP: " SECONDARY_DNS_ADDRESS

Das ist besser. Sie können die Benutzereingaben jetzt wieder auf einige Variablen umleiten, um sie in einem Skript zu verwenden.

Es gibt viele andere Eigenschaften, die Sie festlegen können und die in diesem Lernprogramm nicht im Detail behandelt werden. Wenn Sie weitere gemeinsame Eigenschaften sehen möchten, lesen Sie unbedingt die Netplan-Manpages.

Wenn die Netzwerkoptionen vollständig sind, ist es an der Zeit, ein einzelnes Skript zu erstellen!

Alles in einem Bash-Skript zusammenfassen

Jetzt kombinieren Sie alles in einem einzigen Bash-Skript mit dem, was Sie aus den vorherigen Abschnitten gelernt haben. Öffnen Sie den Editor Ihrer Wahl, fügen Sie den folgenden Code ein und speichern Sie die Datei als ~/host_deploy.sh .

#! /usr/bin/env bash
# host_deploy.sh
# Description:
# For use with Ubuntu Server ovf template. Assumes Ubuntu Cloud image and default sudo account.
# This script is meant to run with sudo.
# Example:
# sudo bash ~/host_deploy.sh

# Gather input from user
read -p "Please type the desired hostname: " NEW_HOSTNAME
read -p "Now type the IP address in CIDR notation, i.e. 192.168.1.1/24: " IP_ADDRESS
read -p "The gateway IP: " GATEWAY_ADDRESS
read -p "The primary DNS IP: " PRIMARY_DNS_ADDRESS
read -p "And finally, the secondary DNS IP: " SECONDARY_DNS_ADDRESS

# Set a new hostname
sudo hostnamectl set-hostname "$NEW_HOSTNAME"

# Create a new netplan yaml config file
sudo touch ~/99-custom.yaml

# Apply network config to netplan yaml config file
# Making some assumptions here about the adapter name
echo "network:" > ~/99-custom.yaml
echo "  ethernets:" >> ~/99-custom.yaml
echo "    enp0s31f6:" >> ~/99-custom.yaml
echo "      dhcp4: false" >> ~/99-custom.yaml
echo "      addresses:"
echo "       - [$IP_ADDRESS]" >> ~/99-custom.yaml
echo "      routes:"
echo "       - to: default"
echo "         via: $GATEWAY_ADDRESS" >> ~/99-custom.yaml
echo "      nameservers:" >> ~/99-custom.yaml
echo "        addresses: [$PRIMARY_DNS_ADDRESS, $SECONDARY_DNS_ADDRESS, 208.67.222.222, 208.67.220.220]" >> ~/99-custom.yaml
echo "  version: 2" >> ~/99-custom.yaml

# Copy the custom config to the netplan folder and apply
sudo cp ~/99-custom.yaml /etc/netplan/99-custom.yaml

# Apply the new config
sudo netplan apply

# Reminder to restart to reset state
echo "Please restart to complete host deployment!!"

Um das Skript auszuführen, führen Sie den folgenden Befehl aus, um das Skript mit bash aufzurufen in Ihrem Terminal.

sudo bash ~/host_deploy.sh

Das Skript fordert Sie auf, einen neuen Hostnamen und IP-Adressinformationen 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önnen Sie ein Golden Image erstellen, um es wiederzuverwenden oder mit Technikern und Personen zu teilen, die diese Aufgabe routinemäßig ausführen.

Schlussfolgerung

Herzliche Glückwünsche! 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 mit einem Ansible-Spiel zu beantworten. Die Aufgaben in diesem Lernprogramm sind nur ein winziges Beispiel für anfängliche Konfigurationselemente, die Sie in Ihren Build- und Bereitstellungsskripts verwenden könnten.

Sie wissen jetzt, wie Sie Benutzereingaben akzeptieren, grundlegende Systemparameter mithilfe eines Bash-Skripts festlegen und diese Technik zum Ändern von Hostnamen und IP-Adressen in Ubuntu Linux anwenden.


Linux
  1. Wie aktualisiere ich Ubuntu?

  2. So ändern Sie den Hostnamen unter CentOS und Ubuntu

  3. Wie installiere und konfiguriere ich Fail2ban auf Ubuntu?

  4. So ändern Sie den Hostnamen unter Ubuntu

  5. Wie testet Bash 'false'?

Wie aktualisiere ich Filezilla auf Ubuntu?

So installieren Sie Gtop in CentOS7 und Ubuntu 18.04

So installieren Sie Grafana auf Ubuntu 18.04 und Debian 8

So ändern Sie den Server-Hostnamen in Ubuntu

Wie vernetzt man Ubuntu und Windows 10?

Wie installiere ich Intellij IDEA auf Ubuntu?