This commit is contained in:
Esteban Mackay Q. 2024-12-05 17:32:11 -05:00
parent c2bb08155f
commit 79b2934818
3 changed files with 55 additions and 18 deletions

View File

@ -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."

View File

@ -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

View File

@ -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