
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-scheduler
anstelle eines Cronjobs den verwenden sollte. Also habe ich eine ping.sh
Datei in erstellt /config/scripts/
, die Berechtigungen auf gesetzt 0755
und einen ausgeführt chmod +x ping.sh
. Dies ist der Inhalt der ping.sh
Datei (zu Testzwecken)
#!/bin/bash
echo "Ping Pong!"
echo "Ping Pong!!" >> result.txt
Wenn ich das Skript manuell ausführe, ./ping.sh
funktioniert 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-scheduler
passiert 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.txt
Ich glaube, Sie hatten beim Schreiben Ihrer Datei einfach ein Problem mit relativen Pfaden oder Berechtigungen .
result.txt
Ich habe einen absoluten Pfad für (im Verzeichnis) festgelegt /tmp
und 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.