GNU/Linux >> Znalost Linux >  >> Linux

Jak aktualizovat Ubuntu IP a název hostitele přes Bash

Existuje několik způsobů, jak spravovat IP adresu a název hostitele vašeho počítače Ubuntu. Systémoví administrátoři mají k dispozici nástroje nmcli, netplan, hostname a hostnamectl. I když tyto nástroje odvádějí samy o sobě dobrou práci, jak můžete tyto nástroje zahrnout do vaší automatizační hry?

Můžete vytvořit Bash skript, který za vás zpracuje konfiguraci. V tomto článku se dozvíte, jak nastavit nový název hostitele a nakonfigurovat informace o IP adrese, to vše pomocí skriptu Bash, který přijímá vstupy.

Každý příklad bude navazovat na druhý. Na konci článku budete mít potřebné znalosti k sestavení plně funkčního konfiguračního skriptu v Bash pro použití na novém nebo stávajícím hostiteli Ubuntu.

Předpoklady

Abyste mohli postupovat podle tohoto návodu, nemusíte být odborníkem na skriptování v prostředí Bash, ale ujistěte se, že máte následující požadavky.

  • Hostitel běžící na Ubuntu. Tento tutoriál používá Ubuntu 22.04 LTS.
  • Kořenová oprávnění k hostiteli Ubuntu.
  • Textový editor, například vim , nano nebo VSCode .

Nastavení názvu hostitele pomocí hostnamectl

Každý hostitel by měl mít jedinečné jméno. Pomocí příkazu hostnamectl můžete dotazovat nebo změnit název hostitele. V tomto případě je syntaxe uvedena níže pro změnu vašeho aktuálního názvu hostitele na libovolný.

sudo hostnamectl set-hostname "new-hostname"

Spuštění příkazu hostnamectl se společným parametrem set-hostname následovaným řetězcovou hodnotou ve dvojitých (“”) uvozovkách jako nový název hostitele. Pokud jste tento příkaz spouštěli ručně, měl by fungovat bez závady.

Ale co kdybyste to chtěli vložit do skriptu, který přijímá vstup uživatele? Začněte pomocí příkazu read, následovaného parametrem -p, což je zkratka pro prompt, a řetězec, který uživateli řekne, co má zadat pro tuto výzvu. Vstup pak uložíte do nové proměnné s názvem NEW_HOSTNAME.

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

Jakmile je název hostitele uložen v proměnné NEW_HOSTNAME, můžete proměnnou poskytnout příkazu hostnamectl jako v příkladu níže.

sudo hostnamectl set-hostname "$NEW_HOSTNAME"

A to je vše! Kombinace těchto dvou řádků umožňuje, aby příkazy fungovaly ve skriptu! Máte však ještě jeden úkol navíc:konfiguraci síťových možností.

Nastavení informací o IP adrese pomocí netplan

Příkaz netplan je de facto metoda pro správu informací o IP adrese síťového rozhraní pro moderní hostitele Ubuntu. Nástroj netplan abstrahuje konfigurace sítě z různých backendů pomocí konfiguračních souborů YAML.

Nástroj netplan čte tyto konfigurační soubory během spouštění systému a aplikuje je na cílová síťová rozhraní. Možná se ptáte, proč je to důležité?

Konfigurace sítě v YAML vám umožňuje začít ukládat nebo zálohovat konfiguraci do úložiště Git. A protože Git poskytuje možnosti sledování změn, můžete použít stejný konfigurační soubor, aniž byste jej museli znovu vytvářet pro budoucí nasazení pomocí kanálů CI/CD. Víte, DevOps!

Před přidáním řádků do konfiguračního souboru musíte vytvořit konfigurační soubor pomocí příkazu touch.

sudo touch ~/99-custom.yaml

Výše uvedený příkaz umístí nový konfigurační soubor do vašeho domovského adresáře. Odtud spustíte příkaz echo na echo co zadáte a vložíte to do konfiguračního souboru řádek po řádku pomocí přesměrování vstupu pro STDOUT> (přidat) a>> (přidat).

Poznámka:K odsazení v YAML používejte dvojité mezery, nikoli tabulátory.

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

S každým příkazem echo vytvoříte konfiguraci YAML pomocí vhodných mezer přesměrováním vstupu pomocí STDOUT. Alternativně můžete tento soubor vytvořit ručně pomocí textového editoru. Soubor však nemusíte vytvářet ručně.

Místo toho požádejte uživatele, aby zadal informace o IP adrese, které potřebujete, pomocí stejného read příkaz.

Tip:Jedním ze způsobů, jak vypsat všechny informace o síťovém rozhraní v Ubuntu, je spustit příkaz ip address.

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

To je lepší. Nyní můžete uživatelský vstup znovu přesměrovat na několik proměnných pro použití ve skriptu.

Existuje mnoho dalších vlastností, které můžete nastavit a které tento výukový program podrobně nepokrývá. Pokud byste chtěli vidět další společné vlastnosti, přečtěte si manuálové stránky netplan.

Po dokončení síťových možností je čas vytvořit jediný skript!

Spojení všeho do Bash skriptu

Nyní vše spojíte do jediného skriptu Bash s tím, co jste se naučili z předchozích částí. Otevřete editor podle svého výběru, vložte níže uvedený kód a uložte soubor jako ~/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!!"

Chcete-li skript spustit, spusťte níže uvedený příkaz a vyvolejte skript s bash ve vašem terminálu.

sudo bash ~/host_deploy.sh

Skript vás vyzve k zadání nového názvu hostitele a informací o IP adrese a připomene vám restartovat hostitele, aby se změny projevily.

Nyní, když máte ve svém uživatelském adresáři funkční skript, můžete vytvořit zlatý obrázek, který můžete znovu použít nebo sdílet s techniky a těmi, kteří tento úkol běžně provádějí.

Závěr

Gratulujeme! Dostali jste se na konec článku a vytvořili jste plně funkční skript Bash, který můžete opakovaně používat.

Můžete také zkusit použít tento skript s Ansible a odpovědět na otázky pomocí hry Ansible. Úlohy v tomto tutoriálu jsou pouze malým příkladem položek počáteční konfigurace, které byste mohli začít používat ve skriptech sestavení a nasazení.

Nyní víte, že máte přijmout vstup od uživatele, nastavit základní systémové parametry pomocí skriptu Bash a použít tuto techniku ​​při změně názvů hostitelů a IP adres v Ubuntu Linux.


Linux
  1. How To Echo A Bang!?

  2. Jak aktualizovat Ubuntu?

  3. Jak aktualizovat na Python 2.7?

  1. Jak změnit název hostitele na CentOS a Ubuntu

  2. Jak nainstalovat a nakonfigurovat Elasticsearch na Ubuntu 18.04

  3. Jak změnit název hostitele na Ubuntu

  1. Jak změnit název hostitele na Ubuntu 20.04

  2. Jak nainstalovat a nakonfigurovat Fail2ban na Ubuntu?

  3. Jak bash testuje „nepravdu“?