Kịch bản Shell Thường dùng cho Linux

  • Dịch vụ Mạng
  • Khởi động dịch vụ NetworkManager Mô tả: Kịch bản này được sử dụng để tắt dịch vụ NetworkManager và khởi động lại dịch vụ network để tránh xung đột dịch vụ gây ra việc không thể áp dụng cấu hình IP
#!/bin/bash

# Kiểm tra trạng thái dịch vụ NetworkManager
check_networkmanager_status() {
    local service_status=$(systemctl is-active NetworkManager)
    return $service_status
}

# Dừng dịch vụ NetworkManager
stop_networkmanager() {
    if systemctl stop NetworkManager; then
        echo "Đã dừng thành công dịch vụ NetworkManager"
        return 0
    else
        echo "Không thể dừng dịch vụ NetworkManager"
        return 1
    fi
}

# Khởi động lại dịch vụ mạng
restart_network_service() {
    if systemctl restart network; then
        echo "Khởi động lại dịch vụ mạng thành công"
        return 0
    else
        echo "Không thể khởi động lại dịch vụ mạng"
        return 1
    fi
}

# Hàm chính
main() {
    check_networkmanager_status
    
    if [ $? -eq "active" ]; then
        stop_networkmanager
        restart_network_service
    else
        restart_network_service
    fi
}

# Thực thi hàm chính
main
  • Cấu hình Card mạng
  • Mô tả: Kịch bản này được sử dụng để đơn giản hóa quá trình cấu hình IP
#!/bin/bash

# Hiển thị thông báo màu xanh
show_green_message() {
    echo -e "\033[32m$1\033[0m"
}

# Kiểm tra tệp cấu hình
check_config_file() {
    config="/etc/sysconfig/network-scripts/ifcfg-eth0"
    if [ ! -f "$config" ]; then
        show_green_message "Tệp cấu hình không tồn tại, đang tạo mới..."
        touch "$config"
    fi
}

# Kiểm tra card mạng
check_network_interface() {
    show_green_message "Đang kiểm tra card mạng..."
    if ! ip link show eth0 > /dev/null 2>&1; then
        echo "Card mạng eth0 không tồn tại"
        exit 1
    fi
}

# Cấu hình cơ bản cho card mạng
basic_network_config() {
    echo "TYPE=Ethernet" >> "$config"
    sed -i "/DNS1/ d" "$config"
}

# Cấu hình địa chỉ IP
configure_ip_address() {
    read -p "Nhập địa chỉ IP: " ip_address
    read -p "Nhập mặt nạ mạng: " netmask
    
    echo "IPADDR=$ip_address" >> "$config"
    echo "NETMASK=$netmask" >> "$config"
    
    configure_gateway_or_dns
}

# Cấu hình cổng chuyển tiếp hoặc DNS
configure_gateway_or_dns() {
    echo "1. Cấu hình cổng chuyển tiếp (Gateway)"
    echo "2. Cấu hình DNS"
    echo "3. Bỏ qua"
    
    read -p "Lựa chọn của bạn (1-3): " choice
    
    case $choice in
        1)
            read -p "Nhập địa chỉ Gateway: " gateway
            echo "GATEWAY=$gateway" >> "$config"
            configure_dns
            ;;
        2)
            read -p "Nhập địa chỉ DNS: " dns
            echo "DNS1=$dns" >> "$config"
            ;;
        3)
            ;;
        *)
            echo "Lựa chọn không hợp lệ"
            ;;
    esac
}

# Cấu hình DNS
configure_dns() {
    read -p "Bạn có muốn cấu hình DNS không? (y/n): " dns_choice
    if [ "$dns_choice" = "y" ]; then
        read -p "Nhập địa chỉ DNS: " dns
        echo "DNS1=$dns" >> "$config"
    fi
}

# Khởi động lại dịch vụ mạng
restart_network_service() {
    if systemctl restart network; then
        show_green_message "Khởi động lại dịch vụ mạng thành công"
    else
        echo "Không thể khởi động lại dịch vụ mạng"
        exit 1
    fi
}

# Kiểm tra và xử lý dịch vụ NetworkManager
handle_networkmanager() {
    local nm_status=$(systemctl is-active NetworkManager)
    
    if [ "$nm_status" != "inactive" ]; then
        show_green_message "Dịch vụ NetworkManager đang chạy, đang tắt và khởi động lại network..."
        if systemctl stop NetworkManager; then
            restart_network_service
            show_green_message "Đã tắt thành công NetworkManager và khởi động lại network"
        else
            echo -e "\033[31mKhông thể tắt dịch vụ NetworkManager\033[0m"
            exit 1
        fi
    else
        show_green_message "NetworkManager đã bị tắt, đang khởi động lại network..."
        restart_network_service
    fi
}

# Hàm chính
main() {
    show_green_message "## Kịch bản này được sử dụng để cấu hình IP cho card mạng... ##"
    echo ""
    
    check_config_file
    check_network_interface
    basic_network_config
    configure_ip_address
    handle_networkmanager
}

# Thực thi hàm chính
main

Thẻ: linux shell kịch bản mạng cấu hình mạng networkmanager

Đăng vào ngày 6 tháng 6 lúc 22:24