#!/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
