So erstellen Sie einen dauerhaften Cronjob auf einem Ubiquiti Edgerouter-X, sodass er nach einem Firmware-Update noch vorhanden ist

So erstellen Sie einen dauerhaften Cronjob auf einem Ubiquiti Edgerouter-X, sodass er nach einem Firmware-Update noch vorhanden ist

Wir haben Dutzende von Ubiquiti Edgerouter-X an Kundenstandorten im Einsatz. Sie sind unter anderem dafür verantwortlich, jede Minute eine IP anzupingen. Dies wird durch einen Cronjob erledigt (eingestellt mit crontab -e) und funktioniert einwandfrei, solange die Firmware nicht aktualisiert wird.

Wenn die Firmware auf eine neuere Version aktualisiert wird, werden die Cronjobs auf den Standardwert „zurückgesetzt“. Nach einiger Recherche habe ich festgestellt, dass ich system task-scheduleranstelle eines Cronjobs den verwenden sollte. Also habe ich eine ping.shDatei in erstellt /config/scripts/, die Berechtigungen auf gesetzt 0755und einen ausgeführt chmod +x ping.sh. Dies ist der Inhalt der ping.shDatei (zu Testzwecken)

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

Wenn ich das Skript manuell ausführe, ./ping.shfunktioniert es einwandfrei, es gibt ein Echo aus Ping Pong!und schreibt Ping Pong!!in result.txt. Wenn ich versuche, das Skript mit auszuführen, system task-schedulerpassiert nichts. Ich habe 2 Taskplaner-Konfigurationen ausprobiert und den Edgerouter nach Folgendem neu gestartet commit; save;:

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

Und

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

Was mache ich falsch? Ich habe mehrere Themen dazu überprüft aufhttps://community.ui.com/konnte aber keine Lösung finden ...

Antwort1

Ihre Lösung schien mir vollkommen in Ordnung (läuft auf einemEdgeRouter X v2.0.9-hotfix.1).

result.txtIch glaube, Sie hatten beim Schreiben Ihrer Datei einfach ein Problem mit relativen Pfaden oder Berechtigungen .

result.txtIch habe einen absoluten Pfad für (im Verzeichnis) festgelegt /tmpund es hat bei mir funktioniert:

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

Beim letzten Befehl können Sie sehen, dass jede Minute eine Zeile hinzugefügt wird.

verwandte Informationen