OPNSense のジョブを定義する
Cron で選択できるジョブを定義したい。
以下の記事を参考にした。
- https://docs.opnsense.org/development/backend/configd.html
- https://gist.github.com/PiDroid-B/078198bc84c1e8451d5fd331b46b332d
ポイント
ポイントはactions.d
フォルダを使う。
/usr/local/opnsense/service/conf/actions.d/
ただし、この内部はOSアップデートやディスクのSync前に再起動で消える可能性がある。
プラグインの場合
プラグインで提供されているdamonなら、次のコマンドを登録すればいい。
pluginctl -s snmpd restart pluginctl -s dhcpd restart
スクリプトを作って登録。
実行するスクリプトを作る /home/takuya/scripts/radiko-area.sh
#!/usr/bin/env bash ## PPPoE接続後に、 radiko エリアを修正する ## 2021-01-26 DEBUG=0 function radiko_area_kansai(){ [[ $DEBUG == 1 ]] && >&2 echo '--------- check radiko ---' if curl -s https://radiko.jp/area | grep -oE 'JP2[6-9]' ; then echo kansai [[ $DEBUG == 1 ]] && >&2 echo kansai return 0 else [[ $DEBUG == 1 ]] && >&2 echo not kansai [[ $DEBUG == 1 ]] && >&2 curl -s https://radiko.jp/area request_radiko_area_correction return 1 fi } function request_radiko_area_correction(){ [[ $DEBUG == 1 ]] && >&2 echo radikoエリア変更リクエスト curl -s 'https://radiko.jp/contact3' \ -X POST \ --data-raw \ 'confirm=1&email=dummy%40dummy.com&area_judge_result=福岡県&prefecture=兵庫県&area_id=JP28+HYOGO+JAPAN' > /dev/null } ## main function main(){ radiko_area_kansai 2>&1 1> /dev/null; } main
スクリプトを動作テスト
chmod +x /home/takuya/scripts/radiko-area.sh /home/takuya/scripts/radiko-area.sh
スクリプトを登録する
ファイル名には規則がある。
/usr/local/opnsense/service/conf/actions.d/actions_${NAME}.conf
スクリプトの名前の規則はあるんだけど、直接書き込むと消される事がある。正確には仮想マシンの再起時にSyncされる前だったり。このへんは正しい対応法がわからない。
今回は次のようにした。
mkdir /home/takuya/scripts/service/ cd /home/takuya/scripts/service/ touch actions_radiko-area.conf ln -sr /home/takuya/scripts/service/actions_radiko-area.conf \ /usr/local/opnsense/service/conf/actions.d/actions_radiko-area.conf
ジョブの定義
/usr/local/opnsense/service/conf/actions.d/actions_radiko-area.conf
[reload] command:/usr/local/bin/flock -n -E 0 -o /tmp/radiko_updater.lock /home/takuya/scripts/radiko-area.sh parameter: type:script_output message:Radiko Area Update description: Radiko area corrention request
作った登録を有効にする。
sudo service configd restart
起動テストする
configctl radiko-area reload
ジョブにでてくる
追記
数週間後に、ファームウェアのアップデートで消えてしまう