如何在 Ubiquiti Edgerouter-X 上建立持久性 cronjob,以便在韌體更新後它仍然存在

如何在 Ubiquiti Edgerouter-X 上建立持久性 cronjob,以便在韌體更新後它仍然存在

我們在客戶位置有數十個處於活動狀態的 Ubiquiti Edgerouter-X。它們負責每分鐘 ping 一個 IP。這是透過 cronjob(使用 crontab -e 設定)完成的,只要韌體未更新,就可以正常工作。

當韌體更新到較新版本時,cronjobs 將「重設」為預設值。經過一些研究,我注意到我應該使用system task-scheduler而不是 cronjob。所以我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!Ping Pong!!寫入result.txt.當我嘗試使用它執行腳本時,system task-scheduler它什麼都不做。我嘗試了 2 個任務計劃程式配置並在以下之後重新啟動了 Edgerouter commit; 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

你的解決方案對我來說似乎非常好(在EdgeRouter X v2.0.9-hotfix.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 分鐘新增一行。

相關內容