GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo actualizar la IP y el nombre de host de Ubuntu a través de Bash

Hay varias formas de administrar la dirección IP y el nombre de host de su computadora Ubuntu. Los administradores del sistema tienen a su disposición las herramientas nmcli, netplan, hostname y hostnamectl. Si bien estas herramientas hacen un buen trabajo por sí solas, ¿cómo puede incluir estas herramientas para mejorar su juego de automatización?

Puede crear un script Bash que manejará la configuración por usted. En este artículo, aprenderá cómo establecer un nuevo nombre de host y configurar la información de la dirección IP, todo con un script Bash que acepta entradas.

Cada ejemplo se basará en el otro. Al final del artículo, tendrá los conocimientos necesarios para crear un script de configuración completamente funcional en Bash para usar en un host Ubuntu nuevo o existente.

Requisitos

No es necesario ser un experto en secuencias de comandos de shell Bash para seguir este tutorial, pero asegúrese de cumplir con los siguientes requisitos.

  • Un host que se ejecuta en Ubuntu. Este tutorial usa Ubuntu 22.04 LTS.
  • Privilegios de raíz para el host de Ubuntu.
  • Un editor de texto, como vim , nano o VSCode .

Configuración del nombre de host con hostnamectl

Cada host debe tener un nombre único. El uso del comando hostnamectl le permite consultar o cambiar el nombre de host. En este caso, la sintaxis es la que se muestra a continuación para cambiar su nombre de host actual a lo que desee.

sudo hostnamectl set-hostname "new-hostname"

Ejecutar el comando hostnamectl con el parámetro común set-hostname seguido de un valor de cadena entre comillas dobles ("") como el nuevo nombre de host. Si estaba ejecutando este comando manualmente, debería funcionar sin problemas.

Pero, ¿qué pasaría si quisiera poner esto en un script que acepte la entrada del usuario? Comience usando el comando de lectura, seguido del parámetro -p, que significa prompt, y una cadena para decirle al usuario qué ingresar para este mensaje. Luego guarda la entrada en una nueva variable, llamada NEW_HOSTNAME.

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

Una vez que el nombre de host se almacena en la variable NEW_HOSTNAME, puede proporcionar la variable al comando hostnamectl como en el ejemplo a continuación.

sudo hostnamectl set-hostname "$NEW_HOSTNAME"

¡Y eso es! ¡La combinación de estas dos frases sencillas permite que los comandos funcionen en un script! Pero, tiene una tarea adicional:configurar las opciones de red.

Configuración de la información de la dirección IP con netplan

El comando netplan es el de facto método para administrar la información de la dirección IP de una interfaz de red para hosts Ubuntu modernos. La herramienta netplan abstrae las configuraciones de red de varios backends utilizando archivos de configuración YAML.

La herramienta netplan lee estos archivos de configuración durante el arranque del sistema y los aplica a las interfaces de red de destino. ¿Por qué es tan importante, podrías preguntar?

Tener su configuración de red en YAML le permite comenzar a guardar o hacer una copia de seguridad de su configuración en un repositorio de Git. Y dado que Git proporciona capacidades de seguimiento de cambios, puede usar ese mismo archivo de configuración sin tener que volver a crearlo para futuras implementaciones mediante canalizaciones de CI/CD. Ya sabes, DevOps!

Antes de agregar líneas a un archivo de configuración, debe crear el archivo de configuración usando el comando táctil.

sudo touch ~/99-custom.yaml

El comando anterior colocará el nuevo archivo de configuración en su directorio de inicio. Desde aquí, ejecutará el comando echo para echo lo que escribe e inyecta eso en el archivo de configuración línea por línea usando la redirección de entrada para STDOUT> (agregar) y>> (agregar).

Nota:Usa espacios dobles y no tabuladores para la sangría en 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 cada comando de eco, construye la configuración YAML usando el espacio apropiado al redirigir la entrada usando STDOUT. Como alternativa, puede compilar este archivo manualmente con un editor de texto. Pero no es necesario que cree el archivo manualmente.

En su lugar, solicite al usuario que ingrese la información de la dirección IP que necesita usando el mismo read comando.

Sugerencia:una forma de enumerar toda la información de la interfaz de red en Ubuntu es ejecutar el comando de dirección 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

Eso es mejor. Ahora puede redirigir la entrada del usuario nuevamente a algunas variables para usar en un script.

Hay muchas otras propiedades que puede configurar que este tutorial no cubre en detalle. Si desea ver propiedades comunes adicionales, asegúrese de leer las páginas man de netplan.

Con las opciones de red completas, ¡es hora de crear un único script!

Poniéndolo todo junto en un script Bash

Ahora, combinará todo en un solo script de Bash con lo que aprendió en las secciones anteriores. Abra el editor de su elección, pegue el código a continuación y guarde el archivo como ~/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!!"

Para ejecutar el script, ejecute el siguiente comando para invocar el script con bash en tu terminal.

sudo bash ~/host_deploy.sh

El script le solicita que ingrese un nuevo nombre de host y la información de la dirección IP y le recuerda que reinicie el host para que los cambios surtan efecto.

Ahora que tiene un script de trabajo en su directorio de usuarios, puede crear una imagen dorada para reutilizar o compartir con los técnicos y aquellos que realizan esta tarea de forma rutinaria.

Conclusión

¡Felicidades! Llegaste al final del artículo y creaste un script Bash completamente funcional que puedes usar repetidamente.

También puede intentar usar este script con Ansible y responder las preguntas usando un juego de Ansible. Las tareas de este tutorial son solo una pequeña muestra de los elementos de configuración inicial que podría comenzar a usar en sus scripts de compilación e implementación.

Ahora sabe aceptar la entrada del usuario, establecer parámetros básicos del sistema mediante un script Bash y aplicar esa técnica para cambiar nombres de host y direcciones IP en Ubuntu Linux.


Linux
  1. ¿Cómo hacer eco de una explosión?

  2. ¿Cómo actualizar a Python 2.7?

  3. Cómo cambiar el nombre de host en CentOS y Ubuntu

  4. ¿Cómo instalar y configurar Fail2ban en Ubuntu?

  5. Cómo cambiar el nombre de host en Ubuntu

¿Cómo actualizar Filezilla en Ubuntu?

Cómo instalar Gtop en CentOS7 y Ubuntu 18.04

Cómo instalar Grafana en Ubuntu 18.04 y Debian 8

Cómo cambiar el nombre de host del servidor en Ubuntu

¿Cómo conectar en red Ubuntu y Windows 10?

¿Cómo instalar Intellij IDEA en Ubuntu?