
お客様の拠点には、数十台の Ubiquiti Edgerouter-X が稼働しています。これらのルータは、IP を 1 分ごとに ping する役割を担っています。これは 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!
書き込みます。 でスクリプトを実行しようとすると、何も起こりません。 2 つのタスク スケジューラ構成を試し、 の後に Edgerouter を再起動しました。Ping Pong!!
result.txt
system task-scheduler
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
あなたの解決策は私には完璧に思えました(エッジルーター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 分ごとに行が追加されることがわかります。