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.
116 lines
3.9 KiB
116 lines
3.9 KiB
2 years ago
|
|
||
|
|
||
|
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[@]}"
|
||
|
}
|
||
|
|