mirror of https://gitlab.com/hp3icc/emq-TE1.git
127 lines
3.5 KiB
Bash
127 lines
3.5 KiB
Bash
#!/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
|