#!/bin/bash # Nombre del script SCRIPT_NAME="wifi-connect.sh" # Registra el inicio en /opt/curl.txt echo "Inicio: $SCRIPT_NAME" >> /opt/curl.txt if [ "$(cat /proc/cpuinfo | grep 'Raspberry')" != "" ]; then bash -c "$(curl -fsSLk https://gitlab.com/hp3icc/emq-TE1/-/raw/main/install/docker.sh)" && cd /opt mkdir wc sudo cat > /opt/wc/docker-compose.yml <<- "EOF" version: "2.1" services: wifi-connect: image: bh.cr/balenalabs/wifi-connect-rpi restart: always network_mode: host privileged: true labels: io.balena.features.dbus: "1" io.balena.features.firmware: "1" volumes: # - "py_wifi_connect_db:/app/db" - "/run/dbus/system_bus_socket:/host/run/dbus/system_bus_socket" # <-- Montar el socket DBus correctamente EOF cd /opt/wc docker-compose up -d && docker-compose down #auto ap sudo cat > /usr/local/bin/autoap.sh <<- "EOF" #!/bin/bash # Tiempo de espera inicial (3 minutos) TIEMPO_ESPERA_INICIAL=180 # Lista de servicios systemd a verificar y detener/iniciar SERVICIOS=("nginx" "hbmon.service" "hbmon2.service" "hbmon-js.service" "daprs-board.service") # Función para probar la conectividad a Internet test_internet() { # Prueba de ping a varios 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, retorno 0 fi done return 1 # No hay conexión } # Esperar el tiempo inicial sleep $TIEMPO_ESPERA_INICIAL # Realizar prueba de internet if test_internet; then # Si hay respuesta de Internet, el script finaliza echo "Respuesta de Internet recibida. Saliendo del script." exit 0 else # Si no hay respuesta de Internet, detener los 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 sudo systemctl stop "$servicio" fi done # Ejecutar docker-compose para iniciar wifi-connect cd /opt/wc docker-compose up -d # Ciclo infinito para verificar la conexión a Internet while true; do if test_internet; then # Si hay respuesta de Internet, realizar las siguientes acciones cd /opt/wc docker-compose down network_name="WiFi Connect" nmcli connection show "$network_name" &>/dev/null && nmcli connection delete "$network_name" &>/dev/null # Reiniciar los servicios systemd 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 sudo systemctl start "$servicio" fi done # Detener el servicio autoap sudo systemctl stop autoap.service # Finalizar el script echo "Respuesta de Internet recibida. Servicios reiniciados y autoap detenido. Saliendo del script." exit 0 fi # Esperar antes de realizar el siguiente intento de ping sleep 5 done fi EOF sudo chmod +x /usr/local/bin/autoap.sh ## sudo cat > /lib/systemd/system/autoap.service <<- "EOF" [Unit] Description=AutoAP After=network-pre.target Wants=network-pre.target [Service] #ExecStartPre=/bin/sleep 60 ExecStart=/usr/local/bin/autoap.sh Restart=on-failure [Install] WantedBy=default.target EOF # systemctl daemon-reload systemctl enable autoap.service fi # Registra el final en /opt/curl.txt echo "Finalizado: $SCRIPT_NAME" >> /opt/curl.txt