Hướng dẫn
Quảng cáo

Chỉnh sửa tệp /etc/hosts bằng bash script như thế nào?

Chủ đề: Ubuntu / Linux / WebserverBài trước|Bài tiếp

Để có thể chỉnh sửa tệp /etc/hosts trên Ubuntu ngoài cách các như chỉnh sửa trực tiếp, qua terminal thì bạn có thể tạo một bash script để làm điều đó. Sau đây là một bash script giúp bạn có thể thêm, xóa, liệt kê các dòng trong tệp hosts.

Đầu tiên tạo 1 tệp tin domain.sh với nội dung như sau:

Ví dụ

#!/bin/bash
# A script to add, remove, and list entries in the hosts file


# Function to add an entry to the hosts file
add_entry() {
    # Get user input for IP address and server name
    read -p "Enter IP address: " ip_address
    read -p "Enter server name: " server_name

    # Check if the input is not empty
    if [ -z "$ip_address" ] || [ -z "$server_name" ]; then
        echo "IP address and server name cannot be empty."
        exit 1
    fi

    # Append the entry to the hosts file
    echo "$ip_address $server_name" >> /etc/hosts

    echo "Entry added to /etc/hosts: $ip_address $server_name"
}

# Function to remove an entry from the hosts file
remove_entry() {
    # Get user input for IP address or server name to remove
    read -p "Enter IP address or server name to remove: " entry_to_remove

    # Check if the input is not empty
    if [ -z "$entry_to_remove" ]; then
        echo "Entry cannot be empty."
        exit 1
    fi

    # Check if the entry exists in the hosts file
    if grep -q "$entry_to_remove" /etc/hosts; then
        # Remove the entry from the hosts file using sed
        sed -i.bak -e "/$entry_to_remove/d" /etc/hosts

        echo "Entry removed from /etc/hosts: $entry_to_remove"
    else
        echo "Entry does not exist in /etc/hosts: $entry_to_remove"
    fi
}


# Function to list all active entries in the hosts file
list_entries() {
    echo "Non-commented entries in /etc/hosts:"
    grep -E -v '^\s*#' /etc/hosts
}


# Check if the script is executed with root privileges
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root."
   exit 1
fi

# Display menu for user choice
echo "1. Add entry"
echo "2. Remove entry"
echo "3. List entries"
read -p "Enter your choice (1, 2, or 3): " choice

case $choice in
    1)
        add_entry
        ;;
    2)
        remove_entry
        ;;
    3)
        list_entries
        ;;
    *)
        echo "Invalid choice. Exiting."
        exit 1
        ;;
esac

Để chạy chương trình thì trong Terminal bạn chạy lệnh sau:

sudo sh domain.sh

Câu hỏi liên quan

Dưới đây là một số câu hỏi thường gặp khác liên quan đến chủ đề này: