emq-TE1/menu/menu-wifi-manager

177 lines
5.7 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 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)
menu-ap ;;
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