cronでMirakurunの受信テストをする
再起動すると治るのだが、気づかないうちに受信できなくなっていてまるまる数日分録画できてませんでした〜では困ってしまうので、1時間おきにスクリプトを回して結果をDiscordに通知することにした。 dropがあればその数を、200以外ならステータスコードを通知し、200でdropがなければ何も通知しない。
code:mirakurun_check.sh
# mirakurun_check.sh
# 10秒受信して200かつdropしていればその数を、200以外だったらステータスコードをwebhookするshellscript
# MIT License
set -eu
TSSELECT_PATH=/usr/local/bin/tsselect
TUNER_INDEX=0
CHANNEL=18
TUNERS=curl -sL $URL/tuners
NAME=jq -r ".[$TUNER_INDEX].name" <<< """$TUNERS"""
COMMAND=jq -r ".[$TUNER_INDEX].command" <<< """$TUNERS"""
TYPE=jq -r ".[$TUNER_INDEX].types[0]" <<< """$TUNERS"""
if $COMMAND =~ 0-9{2} ; then CHANNEL=$BASH_REMATCH
fi
echo "チャンネル:" $CHANNEL
function Received {
ANAL=$TSSELECT_PATH /tmp/chk.ts
RE="total sync error: (0-9+)" if $ANAL =~ $RE ; then
echo "DROP COUNT:" $DROP
curl -sL -H "Content-Type: application/json" -X POST -d "{\"content\": \"$NAME $CHANNEL($TYPE) の受信テストで $DROP Drop しました\"}" $WEBHOOK_URL fi
else
echo "受信失敗: $RES"
curl -sL -H "Content-Type: application/json" -X POST -d "{\"content\": \"$NAME $CHANNEL($TYPE) の受信テストが $RES で失敗しました\"}" $WEBHOOK_URL fi
}
trap Received EXIT
RES=curl -sL --max-time 10 -o /tmp/chk.ts -w '%{http_code}\n' $URL/channels/$TYPE/$CHANNEL/stream