#!/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 9 \ 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 "Auto AP mode" \ 9 "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 -t -f NAME,TYPE connection show | awk -F: '$2 == "802-11-wireless" {print $1}' | nl -s " ") whiptail --title "Redes WiFi Almacenadas" --msgbox "$wifi_list" 15 60 ;; 3) ssid="" wpss="" if [ -f "/tmp/ssid.txt" ]; then rm /tmp/ssid.txt fi if [ -f "/tmp/wpss.txt" ]; then rm /tmp/wpss.txt fi whiptail --title "Agregar nueva red WiFi" --inputbox "Ingresa el SSID de la nueva red WiFi :" 10 60 2>/tmp/ssid.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi ssid=$(cat /tmp/ssid.txt) whiptail --title "Agregar nueva red WiFi" --inputbox "Ingresa password de $ssid :" 10 60 2>/tmp/wpss.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi wpss=$(cat /tmp/wpss.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 "$wpss" nmcli connection modify "$ssid" connection.autoconnect yes sudo systemctl stop NetworkManager sudo systemctl start NetworkManager echo "Nueva red WiFi agregada con éxito y habilitada en wlan0." # read -p "Presiona Enter para continuar..." ;; 4) if [ -f "/tmp/wnn.txt" ]; then rm /tmp/wnn.txt fi if [ -f "/tmp/new_password.txt" ]; then rm /tmp/new_password.txt fi # Lee el archivo /tmp/wnn.txt y almacena las líneas en un array nmcli -t -f NAME,TYPE connection show | awk -F: '$2 == "802-11-wireless" {print $1}' >> /tmp/wnn.txt mapfile -t lines < /tmp/wnn.txt # Construye el menú con whiptail y formatea las líneas options=() for ((i=0; i<${#lines[@]}; i++)); do options+=("$((i+1))" "${lines[i]}") done # Muestra el menú y guarda la selección selection=$(whiptail --title "Editar red Wi-Fi existente" --menu "Selecciona red WiFi:" 18 50 10 "${options[@]}" 3>&1 1>&2 2>&3) # Muestra la selección en el formato solicitado if [ -n "$selection" ]; then index=$(echo "$selection" | cut -d" " -f1) formatted_line="${lines[index-1]}" whiptail --title "Editar red WiFi" --inputbox "Ingresa la nueva contraseña para '$formatted_line':" 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 "$formatted_line" wifi-sec.psk "$new_password" sudo systemctl stop NetworkManager sudo systemctl start NetworkManager echo "Contraseña de la red WiFi '$formatted_line' actualizada con éxito." else echo "Número de red WiFi no válido." fi # read -p "Presiona Enter para continuar..." ;; 5) #!/bin/bash if [ -f "/tmp/wnn.txt" ]; then rm /tmp/wnn.txt fi # Lee el archivo /tmp/wnn.txt y almacena las líneas en un array nmcli -t -f NAME,TYPE connection show | awk -F: '$2 == "802-11-wireless" {print $1}' >> /tmp/wnn.txt mapfile -t lines < /tmp/wnn.txt # Construye el menú con whiptail y formatea las líneas options=() for ((i=0; i<${#lines[@]}; i++)); do options+=("$((i+1))" "${lines[i]}") done # Muestra el menú y guarda la selección selection=$(whiptail --title "Borrar red Wi-Fi" --menu "Selecciona red WiFi:" 18 50 10 "${options[@]}" 3>&1 1>&2 2>&3) # Muestra la selección en el formato solicitado if [ -n "$selection" ]; then index=$(echo "$selection" | cut -d" " -f1) formatted_line="${lines[index-1]}" whiptail --title "Borrar red WiFi" --yesno "¿Estás seguro de que deseas borrar la red WiFi '$formatted_line'?" 10 60 if [ $? -eq 0 ]; then # Eliminar la red WiFi utilizando nmcli nmcli connection delete "$formatted_line" echo "Red WiFi '$formatted_line' eliminada con éxito." else echo "No se ha eliminado ninguna red WiFi." 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) options="" options=$(whiptail --title "Auto AP mode" --menu "Select mode:" 10 60 2 \ "1" "Disable auto AP mode" \ "2" "Enable auto AP mode" 3>&1 1>&2 2>&3) if [ $? != 0 ]; then echo "You chose cancel. Returning to main menu." continue # Regresar al inicio del bucle sin procesar el resto del caso 1 fi case "$options" in "1") if systemctl status autoap.service | grep "Active: active" >/dev/null 2>&1 then sudo systemctl stop autoap.service fi if systemctl status autoap.service | grep "service; enabled;" >/dev/null 2>&1 then sudo systemctl disable autoap.service fi cd /opt/wc docker-compose down network_name="WiFi Connect" nmcli connection show "$network_name" &>/dev/null && nmcli connection delete "$network_name" &>/dev/null ;; "2") if ! systemctl status autoap.service | grep "Active: active" >/dev/null 2>&1 then sudo systemctl stop autoap.service sudo systemctl start autoap.service fi if ! systemctl status autoap.service | grep "service; enabled;" >/dev/null 2>&1 then sudo systemctl enable autoap.service fi ;; *) echo "Invalid selection" ;; esac ;; 9) 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