GNU/Linux >> Belajar Linux >  >> Linux

Cara Memperbarui IP Ubuntu dan Nama Host melalui Bash

Ada beberapa cara untuk mengelola alamat IP dan nama host komputer Ubuntu Anda. Admin sistem memiliki alat nmcli, netplan, hostname, dan hostnamectl yang mereka miliki. Meskipun alat-alat ini bekerja dengan baik dengan sendirinya, bagaimana Anda dapat menyertakan alat-alat ini untuk meningkatkan permainan otomatisasi Anda?

Anda dapat membuat skrip Bash yang akan menangani konfigurasi untuk Anda. Dalam artikel ini, Anda akan mempelajari cara menyetel nama host baru dan mengonfigurasi informasi alamat IP, semuanya dengan skrip Bash yang menerima input.

Setiap contoh akan dibangun di atas yang lain. Di akhir artikel, Anda akan memiliki pengetahuan yang diperlukan untuk membuat skrip konfigurasi yang berfungsi penuh di Bash untuk digunakan pada host Ubuntu baru atau yang sudah ada.

Prasyarat

Anda tidak harus menjadi ahli di skrip shell Bash untuk mengikuti tutorial ini, tetapi pastikan untuk memiliki persyaratan berikut.

  • Sebuah host yang berjalan di Ubuntu. Tutorial ini menggunakan Ubuntu 22.04 LTS.
  • Hak istimewa root ke host Ubuntu.
  • Editor teks, seperti vim , nano , atau VSCode .

Menyetel Hostname dengan hostnamectl

Setiap host harus memiliki nama yang unik. Menggunakan perintah hostnamectl memungkinkan Anda untuk menanyakan atau mengubah nama host. Dalam hal ini, sintaksnya seperti yang ditunjukkan di bawah ini untuk mengubah nama host Anda saat ini menjadi apa pun yang Anda inginkan.

sudo hostnamectl set-hostname "new-hostname"

Menjalankan perintah hostnamectl dengan parameter umum set-hostname diikuti dengan nilai string dalam tanda kutip ganda (“”) sebagai nama host baru. Jika Anda menjalankan perintah ini secara manual, perintah ini akan berfungsi tanpa kesalahan.

Tetapi bagaimana jika Anda ingin memasukkan ini ke dalam skrip yang menerima input pengguna? Mulailah dengan menggunakan perintah read, diikuti dengan parameter -p, yang merupakan singkatan dari prompt, dan string untuk memberi tahu pengguna apa yang harus dimasukkan untuk prompt ini. Anda kemudian menyimpan input ke variabel baru, yang disebut NEW_HOSTNAME.

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

Setelah nama host disimpan dalam variabel NEW_HOSTNAME, Anda dapat memberikan variabel tersebut ke perintah hostnamectl seperti contoh di bawah ini.

sudo hostnamectl set-hostname "$NEW_HOSTNAME"

Dan itu saja! Menggabungkan dua satu baris ini memungkinkan perintah untuk bekerja dalam skrip! Namun, Anda memiliki satu tugas tambahan:mengonfigurasi opsi jaringan.

Mengatur Informasi Alamat IP dengan netplan

Perintah netplan adalah de facto metode untuk mengelola informasi alamat IP antarmuka jaringan untuk host Ubuntu modern. Alat netplan mengabstraksi konfigurasi jaringan dari berbagai backend menggunakan file konfigurasi YAML.

Alat netplan membaca file konfigurasi ini selama boot sistem dan menerapkannya ke antarmuka jaringan target. Mengapa itu penting, Anda mungkin bertanya?

Memiliki konfigurasi jaringan Anda di YAML memberdayakan Anda untuk mulai menyimpan atau mencadangkan konfigurasi Anda ke repositori Git. Dan karena Git menyediakan kemampuan pelacakan perubahan, Anda dapat menggunakan file konfigurasi yang sama tanpa harus membuatnya ulang untuk penerapan di masa mendatang menggunakan pipeline CI / CD. Anda tahu, DevOps!

Sebelum menambahkan baris ke file konfigurasi, Anda harus membuat file konfigurasi menggunakan perintah sentuh.

sudo touch ~/99-custom.yaml

Perintah di atas akan menempatkan file konfigurasi baru ke dalam direktori home Anda. Dari sini, Anda akan menjalankan perintah echo ke echo apa yang Anda ketik dan masukkan ke dalam file konfigurasi baris demi baris menggunakan pengalihan input untuk STDOUT> (tambah) dan>> (tambahkan).

Catatan:Gunakan spasi ganda dan bukan tab untuk indentasi di 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

Dengan setiap perintah echo, Anda membangun konfigurasi YAML menggunakan spasi yang sesuai dengan mengarahkan ulang input menggunakan STDOUT. Atau, Anda dapat membuat file ini secara manual menggunakan editor teks. Namun, Anda tidak perlu membuat file secara manual.

Sebagai gantinya, minta pengguna untuk memasukkan informasi alamat IP yang Anda butuhkan menggunakan read yang sama perintah.

Tips:Salah satu cara untuk membuat daftar semua informasi antarmuka jaringan di Ubuntu adalah dengan menjalankan perintah alamat 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

Itu lebih baik. Sekarang Anda dapat mengarahkan kembali input pengguna ke beberapa variabel untuk digunakan dalam skrip.

Ada banyak properti lain yang dapat Anda atur yang tidak tercakup dalam tutorial ini secara mendetail. Jika Anda ingin melihat properti umum tambahan, pastikan untuk membaca halaman manual netplan.

Setelah opsi jaringan selesai, saatnya membuat satu skrip!

Menggabungkan Semuanya dalam Skrip Bash

Sekarang, Anda akan menggabungkan semuanya menjadi satu skrip Bash dengan apa yang Anda pelajari dari bagian sebelumnya. Buka editor pilihan Anda, rekatkan kode di bawah ini, dan simpan file sebagai ~/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!!"

Untuk menjalankan skrip, jalankan perintah di bawah ini untuk menjalankan skrip dengan bash di terminal Anda.

sudo bash ~/host_deploy.sh

Script meminta Anda untuk memasukkan nama host baru dan informasi alamat IP dan mengingatkan Anda untuk mem-boot ulang host agar perubahan diterapkan.

Sekarang setelah Anda memiliki skrip yang berfungsi di direktori pengguna, Anda dapat membuat gambar emas untuk digunakan kembali atau dibagikan dengan teknisi dan mereka yang secara rutin melakukan tugas ini.

Kesimpulan

Selamat! Anda telah mencapai akhir artikel dan membuat skrip Bash yang berfungsi penuh yang dapat Anda gunakan berulang kali.

Anda juga dapat mencoba menggunakan skrip ini dengan Ansible dan menjawab pertanyaan menggunakan drama Ansible. Tugas dalam tutorial ini hanyalah contoh kecil dari item konfigurasi awal yang dapat Anda mulai gunakan dalam skrip build dan deployment Anda.

Anda sekarang tahu untuk menerima input pengguna, mengatur parameter sistem dasar menggunakan skrip Bash, dan menerapkan teknik itu dalam mengubah nama host dan alamat IP di Ubuntu Linux.


Linux
  1. Cara menginstal dan mengkonfigurasi Elasticsearch di Ubuntu 18.04

  2. Bagaimana cara mengubah nama host di Ubuntu

  3. Bagaimana bash menguji 'false'?

  1. Bagaimana Menggemakan Bang!?

  2. Bagaimana Cara Memperbarui Ubuntu?

  3. Bagaimana Cara Memperbarui Ke Python 2.7?

  1. Cara Mengubah Nama Host di Ubuntu 20.04

  2. Cara mengubah nama host di CentOS dan Ubuntu

  3. Bagaimana Cara Menginstal dan Mengonfigurasi Fail2ban di Ubuntu?