diff --git a/install/move_nmconnection.sh b/install/move_nmconnection.sh index 42f97ea..ab04617 100644 --- a/install/move_nmconnection.sh +++ b/install/move_nmconnection.sh @@ -15,9 +15,38 @@ BOOT_DIR="/boot" # Directorio de destino para los archivos de configuración de NetworkManager DEST_DIR="/etc/NetworkManager/system-connections" +# Función para obtener el SSID del archivo .nmconnection +get_ssid_from_file() { + grep -oP '^ssid=\K.*' "$1" +} + # Buscar archivos .nmconnection en /boot y moverlos a /etc/NetworkManager/system-connections/ for nm_file in $BOOT_DIR/*.nmconnection; do if [ -f "$nm_file" ]; then + # Obtener el SSID del archivo nuevo + new_ssid=$(get_ssid_from_file "$nm_file") + + if [ -z "$new_ssid" ]; then + echo "El archivo $nm_file no tiene SSID, se omite." + continue + fi + + # Buscar archivos existentes en /etc/NetworkManager/system-connections que tengan el mismo SSID + existing_files=$(find "$DEST_DIR" -name "*.nmconnection" -exec grep -l "ssid=$new_ssid" {} \;) + + # Si se encuentran archivos con el mismo SSID, eliminarlos + if [ -n "$existing_files" ]; then + echo "Encontrados archivos con SSID duplicado ('$new_ssid'). Eliminando archivos antiguos..." + for file in $existing_files; do + existing_ssid=$(get_ssid_from_file "$file") + + if [ "$existing_ssid" == "$new_ssid" ]; then + echo "Eliminando archivo antiguo: $file con SSID '$existing_ssid'" + rm -f "$file" + fi + done + fi + # Mover el archivo .nmconnection a la carpeta de configuración de NetworkManager (forzando la sobrescritura) mv -f "$nm_file" "$DEST_DIR/" @@ -26,6 +55,8 @@ for nm_file in $BOOT_DIR/*.nmconnection; do fi done +network_name="WiFi Connect" +nmcli connection show "$network_name" &>/dev/null && nmcli connection delete "$network_name" &>/dev/null # Detener NetworkManager sudo systemctl stop NetworkManager @@ -34,3 +65,5 @@ sudo systemctl start NetworkManager # Recargar las configuraciones de NetworkManager para que se reconozcan los cambios sudo nmcli connection reload + +echo "Proceso completado." diff --git a/install/wifi-connect.sh b/install/wifi-connect.sh index c682bff..431f307 100644 --- a/install/wifi-connect.sh +++ b/install/wifi-connect.sh @@ -35,18 +35,29 @@ sudo cat > /usr/local/bin/autoap.sh <<- "EOF" #!/bin/bash # Tiempo de espera inicial después del encendido en segundos -TIEMPO_ESPERA_INICIAL=120 +TIEMPO_ESPERA_INICIAL=300 # Lista de servicios a verificar y reiniciar si es necesario SERVICIOS=("nginx" "hbmon.service" "hbmon2.service" "hbmon-js.service" "daprs-board.service") +# Función para probar la conexión a Internet +check_internet() { + # Comprobamos la conexión a tres sitios + for site in "noip.com" "google.com" "cloudflare.com"; do + if ping -c 1 "$site" >/dev/null 2>&1; then + return 0 # Conexión exitosa, salimos de la función + fi + done + return 1 # Ningún sitio respondió +} + # Esperar el tiempo inicial sleep $TIEMPO_ESPERA_INICIAL -# Realizar prueba de ping a noip.com -if ping -c 1 noip.com >/dev/null 2>&1; then - # Si recibe respuesta, el script se detiene - echo "Respuesta de ping recibida. Saliendo del script." +# Realizar prueba de ping a varios sitios +if check_internet; then + # Si recibe respuesta de cualquiera de los sitios, el script se detiene + echo "Conexión a Internet detectada. Saliendo del script." exit 0 else # Si no recibe respuesta, detener servicios y ejecutar wifi-connect @@ -62,11 +73,12 @@ else # Ciclo infinito para verificar el ping while true; do - if ping -c 1 noip.com >/dev/null 2>&1; then + if check_internet; then # Si recibe respuesta de ping, ejecutar docker-compose down cd /opt/wc docker-compose down - + network_name="WiFi Connect" + nmcli connection show "$network_name" &>/dev/null && nmcli connection delete "$network_name" &>/dev/null # Salir del ciclo y continuar con el script break fi @@ -77,7 +89,7 @@ else # Continuar con el script después de recibir respuesta de ping # Ciclo infinito de ping hasta recibir respuesta y reiniciar servicios while true; do - if ping -c 1 noip.com >/dev/null 2>&1; then + if check_internet; then # Recibió respuesta de ping, verificar y reiniciar servicios for servicio in "${SERVICIOS[@]}"; do if sudo systemctl is-enabled "$servicio" >/dev/null 2>&1 && ! sudo systemctl is-active "$servicio" >/dev/null 2>&1; then diff --git a/menu/menu-wifi-manager b/menu/menu-wifi-manager index 96a82c5..bfbfe11 100644 --- a/menu/menu-wifi-manager +++ b/menu/menu-wifi-manager @@ -176,18 +176,10 @@ if [ $? -eq 0 ]; then then sudo systemctl disable autoap.service fi - while true; do - if ping -c 1 noip.com >/dev/null 2>&1; then - # Si recibe respuesta de ping, ejecutar docker-compose down cd /opt/wc docker-compose down - - # Salir del ciclo y continuar con el script - break - fi - # Esperar antes del siguiente intento de ping - sleep 5 - done + 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