emq-TE1/menu/menu-wifi-manager

153 lines
5.1 KiB
Bash

#!/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