Ubiquiti Edgerouter-X で永続的な cronjob を作成し、ファームウェアのアップデート後もその cronjob が残るようにする方法

Ubiquiti Edgerouter-X で永続的な cronjob を作成し、ファームウェアのアップデート後もその cronjob が残るようにする方法

お客様の拠点には、数十台の Ubiquiti Edgerouter-X が稼働しています。これらのルータは、IP を 1 分ごとに ping する役割を担っています。これは cronjob (crontab -e で設定) によって実行され、ファームウェアが更新されない限り正常に動作します。

ファームウェアが新しいバージョンに更新されると、cronjobs はデフォルト値に「リセット」されます。調査した結果、system task-schedulercronjob の代わりに を使用する必要があることに気付きました。そこで、ping.shにファイルを作成し/config/scripts/、権限を に設定して0755を実行しましたchmod +x ping.sh。これはファイルの内容ですping.sh(テスト目的)

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

スクリプトを手動で実行すると、./ping.shスクリプトは正常に動作し、エコーしてにPing Pong!書き込みます。 でスクリプトを実行しようとすると、何も起こりません。 2 つのタスク スケジューラ構成を試し、 の後に Edgerouter を再起動しました。Ping Pong!!result.txtsystem task-schedulercommit; save;

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

そして

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

何が間違っているのでしょうか?私はそれについて複数のトピックをチェックしましたhttps://community.ui.com/しかし解決策は見つかりませんでした...

答え1

あなたの解決策は私には完璧に思えました(エッジルーターX v2.0.9-ホットフィックス.1)。

ファイルを書き込むときに、相対パスまたは権限に何らかの問題が発生しただけだと思いますresult.txt

result.txt私は(ディレクトリ内)の絶対パスを設定しました/tmpが、うまくいきました:

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

最後のコマンドでは、1 分ごとに行が追加されることがわかります。

関連情報