mirror of https://gitlab.com/hp3icc/emq-TE1.git
242 lines
7.7 KiB
Bash
242 lines
7.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*
|
|
############
|
|
#menu auto ap
|
|
sudo cat /bin/menu-ap > /dev/null << 'EOF'
|
|
#!/bin/bash
|
|
|
|
if grep -q 'Raspberry' /proc/cpuinfo; then
|
|
while :
|
|
do
|
|
choix=$(whiptail --title "IP Tools" --menu "Selecciona una opción:" 15 60 6 \
|
|
1 "Disable auto AP mode" \
|
|
2 "Enable auto AP mode" \
|
|
3 "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)
|
|
# Disable auto AP mode
|
|
servicios=("autoap.service")
|
|
for servicio in "${servicios[@]}"; do
|
|
if systemctl is-enabled "$servicio" >/dev/null 2>&1; then
|
|
echo "Disabling $servicio"
|
|
sudo systemctl disable "$servicio"
|
|
sudo systemctl stop "$servicio"
|
|
fi
|
|
done
|
|
;;
|
|
2)
|
|
# Enable auto AP mode
|
|
servicios=("autoap.service")
|
|
for servicio in "${servicios[@]}"; do
|
|
if systemctl is-enabled "$servicio" >/dev/null 2>&1; then
|
|
echo "Restarting $servicio"
|
|
sudo systemctl restart "$servicio"
|
|
else
|
|
echo "Starting and enabling $servicio"
|
|
sudo systemctl start "$servicio"
|
|
sudo systemctl enable "$servicio"
|
|
fi
|
|
done
|
|
;;
|
|
3)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
exit 0
|
|
else
|
|
whiptail --title "IP Tools" --msgbox "Esta opcion solo esta disponible para Raspberry / This option is only available for Raspberry" 0 50
|
|
exit 0
|
|
fi
|
|
EOF
|
|
|
|
# Asignar permisos de ejecución
|
|
sudo chmod +x /bin/menu-ap
|
|
sudo ln -sf /bin/menu-ap /bin/MENU-AP
|
|
sudo chmod +x /bin/MENU-AP
|
|
|
|
fi |