#!/bin/bash if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then #menu-wifi sudo cat > /bin/menu-wifi-manager <<- "EOF" #!/bin/bash if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then while : do choix=$(whiptail --title "WiFi Mannager" --menu "Selecciona una opción:" 15 60 8 \ 1 "Mostrar redes Wi-Fi cercanas" \ 2 "Mostrar redes Wi-Fi almacenadas" \ 3 "Agregar nueva red Wi-Fi" \ 4 "Editar red Wi-Fi existente" \ 5 "Borrar red Wi-Fi" \ 6 "WiFi Signal Meter (wavemon)" \ 7 "IP Tools Manager" \ 8 "Salir" 3>&1 1>&2 2>&3) exitstatus=$? if [ $exitstatus = 0 ]; then echo "Opción seleccionada:" $choix else echo "Has elegido cancelar. Saliendo..." break fi case $choix in 1) echo "Scan redes WiFi:" wifi_scan=$(sudo iwlist wlan0 scan | grep ESSID | grep -oP '"\K[^"]+') formatted_wifi_scan=$(echo "$wifi_scan" | sed 's/"//g') whiptail --title "Scan Redes WiFi Cercanas" --msgbox "$formatted_wifi_scan" 15 60 ;; 2) echo "Mostrando redes WiFi almacenadas:" wifi_list=$(nmcli connection show | awk '$3 == "wifi" {print $1}' | nl -s " ") whiptail --title "Redes WiFi Almacenadas" --msgbox "$wifi_list" 15 60 ;; 3) ssid="" password="" whiptail --title "Agregar nueva red WiFi" --inputbox "Ingresa el SSID de la nueva red WiFi:" 10 60 2>/tmp/ssid.txt ssid=$(cat /tmp/ssid.txt) whiptail --title "Agregar nueva red WiFi" --inputbox "Ingresa la contraseña de la nueva red WiFi:" 10 60 2>/tmp/password.txt password=$(cat /tmp/password.txt) # Agregar la nueva red WiFi utilizando los comandos específicos nmcli connection add type wifi ifname wlan0 con-name $ssid ssid "$ssid" nmcli connection modify $ssid wifi-sec.key-mgmt wpa-psk nmcli connection modify $ssid wifi-sec.psk "$password" nmcli connection modify $ssid connection.autoconnect yes sudo systemctl restart NetworkManager rm -f /tmp/ssid.txt /tmp/password.txt echo "Nueva red WiFi agregada con éxito y habilitada en wlan0." # read -p "Presiona Enter para continuar..." ;; 4) wifi_list=$(nmcli connection show | awk '$3 == "wifi" {print $1}' | nl -s " ") choice_num="" while [ -z "$choice_num" ]; do choice_num=$(whiptail --title "Redes WiFi Almacenadas" --menu "Selecciona una red WiFi para borrar:" 15 60 6 $wifi_list 3>&1 1>&2 2>&3) if [ $? -ne 0 ]; then echo "Has elegido cancelar. Saliendo..." break fi done if [[ $choice_num =~ ^[0-9]+$ ]]; then ssid_to_edit=$(nmcli connection show | awk '$3 == "wifi" {print $1}' | sed -n "${choice_num}p") if [ -n "$ssid_to_edit" ]; then # Solicitar la nueva contraseña whiptail --title "Editar red WiFi" --inputbox "Ingresa la nueva contraseña para '$ssid_to_edit':" 10 60 2>/tmp/new_password.txt new_password=$(cat /tmp/new_password.txt) # Cambiar la contraseña de la red WiFi utilizando nmcli nmcli connection modify $ssid_to_edit wifi-sec.psk "$new_password" sudo systemctl restart NetworkManager rm -f /tmp/new_password.txt echo "Contraseña de la red WiFi '$ssid_to_edit' actualizada con éxito." else echo "Número de red WiFi no válido." fi else echo "Número de red WiFi no válido." fi # read -p "Presiona Enter para continuar..." ;; 5) wifi_list=$(nmcli connection show | awk '$3 == "wifi" {print $1}' | nl -s " ") choice_num="" while [ -z "$choice_num" ]; do choice_num=$(whiptail --title "Redes WiFi Almacenadas" --menu "Selecciona una red WiFi para borrar:" 15 60 6 $wifi_list 3>&1 1>&2 2>&3) if [ $? -ne 0 ]; then echo "Has elegido cancelar. Saliendo..." break fi done if [[ $choice_num =~ ^[0-9]+$ ]]; then ssid_to_delete=$(nmcli connection show | awk '$3 == "wifi" {print $1}' | sed -n "${choice_num}p") if [ -n "$ssid_to_delete" ]; then # Confirmar la eliminación de la red WiFi whiptail --title "Borrar red WiFi" --yesno "¿Estás seguro de que deseas borrar la red WiFi '$ssid_to_delete'?" 10 60 if [ $? -eq 0 ]; then # Eliminar la red WiFi utilizando nmcli nmcli connection delete "$ssid_to_delete" echo "Red WiFi '$ssid_to_delete' eliminada con éxito." else echo "No se ha eliminado ninguna red WiFi." fi else echo "Número de red WiFi no válido." fi else echo "Número de red WiFi no válido." fi # read -p "Presiona Enter para continuar..." ;; 6) sudo wavemon ;; 7) menu-ip ;; 8) break ;; esac done exit 0 else whiptail --title "WiFi Mannager" --msgbox "Esta opcion solo esta disponible para Raspberry / This option is only available for Raspberry" 0 50 exit 0 fi EOF # chmod +x /bin/menu-wifi-manager ln -sf /bin/menu-wifi-manager /bin/MENU-WIFI-MANAGER chmod +x /bin/MENU* fi