You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.9 KiB
115 lines
3.9 KiB
|
|
|
|
configure_dhcp() { |
|
# Ask for confirmation before proceeding |
|
if ! ask_Yn "The spell of Dynamic Host Configuration Protocol will automatically configure your network settings based on the DHCP server. Would you like to proceed?"; then |
|
return 1 |
|
fi |
|
|
|
# Check if DHCP is already in use |
|
if ip addr show | grep "dhclient" >/dev/null 2>&1 ; then |
|
printf "DHCP is already in use.\n" |
|
return 0 |
|
fi |
|
|
|
# Backup the current network configuration |
|
backup_file "/etc/network/interfaces" |
|
|
|
# Configure the system to use DHCP |
|
echo "auto lo" > /etc/network/interfaces |
|
echo "iface lo inet loopback" >> /etc/network/interfaces |
|
echo "auto eth0" >> /etc/network/interfaces |
|
echo "iface eth0 inet dhcp" >> /etc/network/interfaces |
|
service networking restart |
|
printf "DHCP has been configured successfully.\n" |
|
} |
|
|
|
configure_static_ip() { |
|
# Ask the user for the IP address, netmask, gateway, and DNS server |
|
read -p "Enter the desired IP address: " ip_address |
|
read -p "Enter the netmask (in CIDR notation, e.g. 24): " netmask |
|
read -p "Enter the gateway IP: " gateway |
|
read -p "Enter the DNS server IP: " dns_server |
|
|
|
# Check if the static IP address is already configured |
|
if ip addr show | grep -q "$ip_address/$netmask"; then |
|
echo "The static IP address $ip_address/$netmask is already configured. Updating it." |
|
# Delete the existing configuration |
|
sudo ip addr del "$ip_address/$netmask" dev eth0 |
|
fi |
|
|
|
# Add the new static IP address configuration |
|
sudo ip addr add "$ip_address/$netmask" dev eth0 |
|
|
|
# Set the gateway |
|
sudo ip route add default via "$gateway" |
|
|
|
# Set the DNS server |
|
sudo sed -i "s/^nameserver.*/nameserver $dns_server/" /etc/resolv.conf |
|
|
|
echo "Static IP address configuration has been set to $ip_address/$netmask with gateway $gateway and DNS server $dns_server." |
|
} |
|
|
|
configure_dhcp() { |
|
# Ask for confirmation before proceeding |
|
ask_Yn "The spell of Dynamic Host Configuration Protocol will automatically configure your network settings based on the DHCP server. Would you like to proceed?" |
|
if [ $? -ne 0 ]; then |
|
return 1 |
|
fi |
|
|
|
# Check if DHCP is already in use |
|
ip addr show | grep "dhclient" &>/dev/null |
|
if [ $? -eq 0 ]; then |
|
echo -e "${RED}DHCP is already in use.${RESET}" |
|
return 0 |
|
fi |
|
|
|
# Backup the current network configuration |
|
backup_file "/etc/network/interfaces" |
|
|
|
# Configure the system to use DHCP |
|
echo "auto lo" > /etc/network/interfaces |
|
echo "iface lo inet loopback" >> /etc/network/interfaces |
|
echo "auto eth0" >> /etc/network/interfaces |
|
echo "iface eth0 inet dhcp" >> /etc/network/interfaces |
|
service networking restart |
|
echo -e "${GREEN}DHCP has been configured successfully.${RESET}" |
|
} |
|
|
|
display_menu() { |
|
# Get the dimensions of the terminal window |
|
window_width=$(tput cols) |
|
window_height=$(tput lines) |
|
|
|
# Calculate the number of rows that the menu will occupy |
|
num_rows=$(( ${#items[@]})) |
|
|
|
# Calculate the position of the menu |
|
menu_x=$((0)) |
|
menu_y=$(row) |
|
|
|
# Clear the area of the screen where the menu will be drawn |
|
clear_area $menu_x $menu_y $num_rows $window_width |
|
|
|
# Print the menu title |
|
echo -en "\033[$menu_y;$((menu_x + (window_width / 2 - ${#title} / 2)))H$title" |
|
|
|
# Print the items and commands |
|
for i in "${!items[@]}"; do |
|
echo -en "\033[$((menu_y + i + 1));$((menu_x + 2))H ${items[$i]}" |
|
done |
|
|
|
# Highlight the selected item |
|
echo -en "\033[$((menu_y + selected + 1));$((menu_x + 2))H ${CYAN}${items[$selected]}${RESET}" |
|
|
|
# Move the cursor to the selected item |
|
echo -en "\033[$((menu_y + selected + 1));$((menu_x + 2))H" |
|
} |
|
|
|
display_menu() { |
|
description="Please choose an option to configure your network settings" |
|
options=("Configure static IP" "Configure DHCP" "Reset to DHCP" "Exit") |
|
commands=("configure_static_ip" "configure_dhcp" "reset_dhcp" "exit") |
|
menu "$description" "${options[@]}" "${commands[@]}" |
|
} |
|
|
|
|