それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

OPNSense のCronジョブを定義する

OPNSense のジョブを定義する

Cron で選択できるジョブを定義したい。

以下の記事を参考にした。

ポイント

ポイントは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

ジョブにでてくる

追記

数週間後に、ファームウェアのアップデートで消えてしまう

ファームウェアのアップデートで消えてしまう事があるので、リモートでAPIで叩いたほうが良いかもしれない。