GNU/Linux >> Linux Esercitazione >  >> Linux

Come aggiornare l'IP e il nome host di Ubuntu tramite Bash

Esistono diversi modi per gestire l'indirizzo IP e il nome host del tuo computer Ubuntu. Gli amministratori di sistema hanno a disposizione gli strumenti nmcli, netplan, hostname e hostnamectl. Sebbene questi strumenti facciano un ottimo lavoro da soli, come puoi includere questi strumenti per migliorare il tuo gioco di automazione?

Puoi creare uno script Bash che gestirà la configurazione per te. In questo articolo imparerai come impostare un nuovo nome host e configurare le informazioni sull'indirizzo IP, il tutto con uno script Bash che accetta input.

Ogni esempio si baserà sull'altro. Entro la fine dell'articolo, avrai le conoscenze necessarie per creare uno script di configurazione completamente funzionale in Bash da utilizzare su un host Ubuntu nuovo o esistente.

Prerequisiti

Non devi essere un esperto di scripting della shell Bash per seguire questo tutorial, ma assicurati di avere i seguenti requisiti.

  • Un host in esecuzione su Ubuntu. Questo tutorial utilizza Ubuntu 22.04 LTS.
  • Privilegi di root per l'host Ubuntu.
  • Un editor di testo, come vim , nano o VSCode .

Impostazione del nome host con hostnamectl

Ogni host dovrebbe avere un nome univoco. L'utilizzo del comando hostnamectl consente di interrogare o modificare il nome host. In questo caso, la sintassi è quella mostrata di seguito per cambiare il tuo nome host attuale con quello che desideri.

sudo hostnamectl set-hostname "new-hostname"

Esecuzione del comando hostnamectl con il parametro comune di set-hostname seguito da un valore stringa tra virgolette doppie ("") come nuovo nome host. Se stavi eseguendo questo comando manualmente, dovrebbe funzionare senza problemi.

E se volessi inserirlo in uno script che accetta l'input dell'utente? Inizia usando il comando read, seguito dal parametro -p, che sta per prompt, e una stringa per dire a un utente cosa inserire per questo prompt. Quindi salvi l'input in una nuova variabile, chiamata NEW_HOSTNAME.

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

Una volta che il nome host è stato memorizzato nella variabile NEW_HOSTNAME, puoi fornire la variabile al comando hostnamectl come nell'esempio seguente.

sudo hostnamectl set-hostname "$NEW_HOSTNAME"

E questo è tutto! La combinazione di queste due battute consente ai comandi di funzionare in uno script! Ma hai un compito aggiuntivo:configurare le opzioni di rete.

Impostazione delle informazioni sull'indirizzo IP con netplan

Il comando netplan è il de facto metodo per gestire le informazioni sull'indirizzo IP di un'interfaccia di rete per i moderni host Ubuntu. Lo strumento netplan estrae le configurazioni di rete da vari backend utilizzando i file di configurazione YAML.

Lo strumento netplan legge questi file di configurazione durante l'avvio del sistema e li applica alle interfacce di rete di destinazione. Perché è così importante, potresti chiedere?

Avere la configurazione di rete in YAML ti consente di iniziare a salvare o eseguire il backup della configurazione in un repository Git. E poiché Git fornisce funzionalità di rilevamento delle modifiche, puoi utilizzare lo stesso file di configurazione senza doverlo ricreare per distribuzioni future utilizzando pipeline CI/CD. Sai, DevOps!

Prima di aggiungere righe a un file di configurazione, è necessario creare il file di configurazione utilizzando il comando touch.

sudo touch ~/99-custom.yaml

Il comando sopra inserirà il nuovo file di configurazione nella tua home directory. Da qui, eseguirai il comando echo per echo ciò che digiti e lo inserisci nel file di configurazione riga per riga utilizzando il reindirizzamento dell'input per STDOUT> (aggiungi) e>> (aggiungi).

Nota:usa spazi doppi e non tabulazioni per il rientro 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

Con ogni comando echo, costruisci la configurazione YAML usando la spaziatura appropriata reindirizzando l'input usando STDOUT. In alternativa, puoi creare questo file manualmente usando un editor di testo. Tuttavia, non è necessario creare il file manualmente.

Chiedi invece all'utente di inserire le informazioni sull'indirizzo IP di cui hai bisogno utilizzando lo stesso read comando.

Suggerimento:un modo per elencare tutte le informazioni sull'interfaccia di rete su Ubuntu è eseguire il comando indirizzo IP.

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

Va meglio. È ora possibile reindirizzare nuovamente l'input dell'utente su alcune variabili da utilizzare in uno script.

Ci sono molte altre proprietà che puoi impostare che questo tutorial non tratta in dettaglio. Se desideri vedere altre proprietà comuni, assicurati di leggere le pagine man di netplan.

Con le opzioni di rete complete, è ora di creare un unico script!

Mettere tutto insieme in uno script Bash

Ora combinerai tutto in un unico script Bash con ciò che hai imparato dalle sezioni precedenti. Apri il tuo editor preferito, incolla il codice qui sotto e salva il file come ~/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!!"

Per eseguire lo script, esegui il comando seguente per richiamare lo script con bash nel tuo terminale.

sudo bash ~/host_deploy.sh

Lo script richiede di inserire un nuovo nome host e informazioni sull'indirizzo IP e ricorda di riavviare l'host affinché le modifiche abbiano effetto.

Ora che hai uno script funzionante nella tua directory utente, puoi creare un'immagine d'oro da riutilizzare o condividere con i tecnici e coloro che svolgono regolarmente questa attività.

Conclusione

Congratulazioni! Sei arrivato alla fine dell'articolo e hai creato uno script Bash completamente funzionante che puoi utilizzare ripetutamente.

Potresti anche provare a usare questo script con Ansible e rispondere alle domande usando un gioco Ansible. Le attività in questo tutorial sono solo un piccolo esempio di elementi di configurazione iniziale che potresti iniziare a utilizzare negli script di compilazione e distribuzione.

Ora sai come accettare l'input dell'utente, impostare i parametri di sistema di base utilizzando uno script Bash e applicare quella tecnica per modificare i nomi host e gli indirizzi IP in Ubuntu Linux.


Linux
  1. Come fare eco a un botto!?

  2. Come aggiornare Ubuntu?

  3. Come aggiornare a Python 2.7?

  4. Come cambiare il nome host su CentOS e Ubuntu

  5. Come installare e configurare Fail2ban su Ubuntu?

Come aggiornare Filezilla su Ubuntu?

Come installare Gtop in CentOS7 e Ubuntu 18.04

Come installare Grafana su Ubuntu 18.04 e Debian 8

Come modificare il nome host del server in Ubuntu

Come collegare in rete Ubuntu e Windows 10?

Come installare Intellij IDEA su Ubuntu?