mirror of https://gitlab.com/hp3icc/emq-TE1.git
timer-ap
This commit is contained in:
parent
c2bb08155f
commit
79b2934818
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue