Cómo crear un cronjob persistente en un Ubiquiti Edgerouter-X para que siga ahí después de una actualización de firmware

Cómo crear un cronjob persistente en un Ubiquiti Edgerouter-X para que siga ahí después de una actualización de firmware

Tenemos decenas de Ubiquiti Edgerouter-X activos en las ubicaciones de los clientes. Entre otras cosas, son responsables de hacer ping a una IP cada minuto. Esto se hace mediante un cronjob (configurado con crontab -e) y funciona bien siempre que el firmware no esté actualizado.

Cuando el firmware se actualiza a una versión más reciente, los cronjobs se "restablecen" al valor predeterminado. Después de investigar un poco, noté que debería usar en system task-schedulerlugar de un cronjob. Así que creé un ping.sharchivo en /config/scripts/, configuré los permisos 0755e hice un archivo chmod +x ping.sh. Este es el contenido del ping.sharchivo (para fines de prueba)

#!/bin/bash
echo "Ping Pong!"
echo "Ping Pong!!" >> result.txt    

Cuando ejecuto el script manualmente, ./ping.shel script funciona bien, hace eco Ping Pong!y escribe Ping Pong!!en result.txt. Cuando intento ejecutar el script con el system task-schedulerno hace nada. Probé 2 configuraciones del programador de tareas y reinicié el Edgerouter después de commit; save;:

show system task-scheduler task
 task ping-task {
     crontab-spec "* *  *   *   *"
     executable {
         path /config/scripts/ping.sh
     }
 }

y

show system task-scheduler task
 task ping-task {
     executable {
         path /config/scripts/ping.sh
     }
     interval 1m
 }

¿Qué me equivoco? Revisé varios temas al respecto enhttps://community.ui.com/pero no pude encontrar una solución...

Respuesta1

Su solución me pareció perfectamente buena (ejecutándose en unEdgeRouter X v2.0.9-hotfix.1).

Creo que acaba de tener algún problema con las rutas relativas o los permisos al escribir su result.txtarchivo.

Establecí una ruta absoluta para result.txt(en /tmpel directorio) y funcionó para mí:

cat > /config/scripts/pinger.sh <<'EOF'
#!/bin/bash
echo "Ping Pong!!" >> /tmp/result.txt
EOF

chmod +x /config/scripts/pinger.sh

configure
set system task-scheduler task pinger executable path /config/scripts/pinger.sh
set system task-scheduler task pinger interval 1m
commit ; save ; exit

watch cat /tmp/result.txt

Con el último comando puedes ver que se agrega una línea cada 1 minuto.

información relacionada