mirror of https://gitlab.com/hp3icc/emq-TE1.git
124 lines
3.2 KiB
Bash
124 lines
3.2 KiB
Bash
#!/bin/bash
|
|
SCRIPT_NAME="rebooter.sh"
|
|
#
|
|
# Registra el inicio en /opt/curl.txt
|
|
echo "Inicio: $SCRIPT_NAME" >> /opt/curl.txt
|
|
#####################################################################################################################
|
|
# rebooter general system
|
|
#####################################################################################################################
|
|
#
|
|
sudo cat > /usr/local/bin/rebooter1.sh <<- "EOF"
|
|
#!/bin/bash
|
|
|
|
# Tiempo de espera inicial en segundos (5 minutos)
|
|
TIEMPO_INICIO=300
|
|
|
|
# Tiempo de espera entre los chequeos en segundos (3 minutos)
|
|
TIEMPO_ESPERA=180
|
|
|
|
# Número máximo de intentos fallidos consecutivos antes de reiniciar
|
|
MAX_INTENTOS_FALLIDOS=3
|
|
|
|
# Contador de intentos fallidos consecutivos
|
|
intentos_fallidos=0
|
|
|
|
# Lista de sitios a hacer ping (puedes agregar más sitios aquí)
|
|
SITIOS_PING=("noip.com" "google.com" "cloudflare.com")
|
|
|
|
# Función para verificar el estado de Internet
|
|
verificar_internet() {
|
|
# Intentamos hacer ping a cada sitio en la lista
|
|
for sitio in "${SITIOS_PING[@]}"; do
|
|
ping -c 1 -W 1 $sitio > /dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
# Si uno de los sitios responde, consideramos que hay conexión
|
|
return 0
|
|
fi
|
|
done
|
|
# Si ningún sitio responde, consideramos que no hay conexión
|
|
return 1
|
|
}
|
|
|
|
# Espera inicial de 5 minutos antes de comenzar las pruebas
|
|
sleep $TIEMPO_INICIO
|
|
|
|
# Bucle infinito para monitorear
|
|
while true; do
|
|
if verificar_internet; then
|
|
# Si la conexión está activa, reseteamos el contador de fallos
|
|
intentos_fallidos=0
|
|
else
|
|
# Si no hay conexión, incrementamos el contador de intentos fallidos
|
|
intentos_fallidos=$((intentos_fallidos + 1))
|
|
|
|
# Si se han alcanzado los intentos fallidos consecutivos, reiniciamos el sistema
|
|
if [ $intentos_fallidos -ge $MAX_INTENTOS_FALLIDOS ]; then
|
|
echo "Conexión perdida por 3 intentos consecutivos. Reiniciando el sistema..."
|
|
sudo reboot
|
|
fi
|
|
fi
|
|
|
|
# Esperar antes de volver a comprobar la conexión (3 minutos)
|
|
sleep $TIEMPO_ESPERA
|
|
done
|
|
|
|
EOF
|
|
#
|
|
#####################################################################################################################
|
|
# rebooter 2
|
|
#####################################################################################################################
|
|
#
|
|
sudo cat > /usr/local/bin/rebooter2.sh <<- "EOF"
|
|
#!/bin/bash
|
|
sleep 300
|
|
while :
|
|
do
|
|
SERVER=noip.com
|
|
|
|
ping -c5 ${SERVER} > /dev/null
|
|
|
|
if [ $? != 0 ]
|
|
then
|
|
#
|
|
sudo reboot
|
|
|
|
fi
|
|
|
|
|
|
sleep 60
|
|
done
|
|
|
|
EOF
|
|
#
|
|
sudo cat > /lib/systemd/system/rebooter1.service <<- "EOF"
|
|
[Unit]
|
|
Description=Rebooter Service1
|
|
After=network.target
|
|
|
|
[Service]
|
|
ExecStart=/usr/local/bin/rebooter1.sh
|
|
Restart=on-failure
|
|
|
|
[Install]
|
|
WantedBy=default.target
|
|
|
|
EOF
|
|
#
|
|
sudo cat > /lib/systemd/system/rebooter2.service <<- "EOF"
|
|
[Unit]
|
|
Description=Rebooter Service2
|
|
After=network.target
|
|
|
|
[Service]
|
|
ExecStart=/usr/local/bin/rebooter2.sh
|
|
Restart=on-failure
|
|
|
|
[Install]
|
|
WantedBy=default.target
|
|
|
|
EOF
|
|
#########
|
|
sudo systemctl daemon-reload
|
|
sudo chmod +x /usr/local/bin/rebooter*
|
|
echo "Finalizado: $SCRIPT_NAME" >> /opt/curl.txt
|