録音ファイルをsambaサーバに自動でコピーする
rfriends3には、ラジコやらじるの録音完了後、特定のsh(bat)を起動する仕組みがあります。
具体的には1番組の録音終了時に、user_process2.sh(bat)が呼び出され、そこにユーザ独自の処理を記述することができます。
ここでは、debian/ubuntuを例に説明します。
他のディストリやWindowsでも同様のことが可能です。
[!CAUTION]
この件に関しては、基本的にサポートは行っていません。
1) smbclientの確認
$ smbclient --version
Version 4.13.13-Debian
存在しない場合はインストールする。
$ sudo apt install smbclient
2) コピー先ディレクトリを作成する。
ここでは仮に以下とする。
サーバ: 192.168.1.90
共有ディレクトリ: smbdir
コピー先ディレクトリ: dstdir
共有ディレクトリは、/home/rpi/smbdirと仮定する。
$ mkdir /home/rpi/smbdir/dstdir
3) user_process2.shを編集
user_process2.shに直接処理を書いてもいいが、
いったん、別shを起動するほうがいい。
$ vi /home/rpi/rfriends3/config/user_process2.sh
#!/bin/sh
sh /home/rpi/user_process2_ex.sh $1 $2 $3 >> /home/rpi/user_process2_ex.log 2> /home/rpi/user_process2_ex.err
exit
4) 実際の処理を記述する。
user_process2.shに記述したshを編集する。(ここでは user_process2_ex.sh)
単純に録音ファイルをコピーしている。
$ vi /home/rpi/user_process2_ex.sh
#!/bin/sh
#
# Ver1.3.4までは$1のみ、Ver1.3.5 以降で$2,$3が有効
# $1 で録音したファイル名が渡ってくる
# $2 ex_type(radiko,radiru,...)
# $3 ch(TBS,LFR,...)
#
#echo $1 $2 $3
#
src=$1
dst=`basename $1`
server=//192.168.1.90/smbdir
dstdir=dstdir
user=user
pass=pass
#echo "smbclient $server -D $dstdir -U $user%$pass -c \"put $src $dst ; exit\" \n"
smbclient $server -D $dstdir -U $user%$pass -c "put $src $dst ; exit"
ret=$?
if [ $ret -eq 0 ]; then
echo "OK"
# rm $src
else
echo "NG"
fi
exit
[!CAUTION] 注)リターンコードが正確でないことがあるので、 成功だから元ファイル削除はちょっと危険です。
AIに質問したら、以下のような答えが返ってきました。
# -c で ls コマンドを実行、出力は標準エラーも含めて変数に
OUTPUT=$(smbclient "$SERVER" -U "$USER"%"$PASS" -c "ls" 2>&1)
if [[ $OUTPUT == *"NT_STATUS_ACCESS_DENIED"* ]]; then
echo "アクセス拒否"
elif [[ $OUTPUT == *"NT_STATUS_LOGON_FAILURE"* ]]; then
echo "ログオン失敗"
elif [[ $OUTPUT == *"SAMBA_ERROR"* ]]; then # その他エラー
echo "エラー: $OUTPUT"
else
echo "接続成功"
fi
5) rfriends3のユーザプロセス2を有効にする。
設定 - パラメータ - 編集
108行あたり
user_process2 = 1
719行あたり
;; rftrans,delivery,user_process2 の処理モード
rftrans_job_mode = 0
[!NOTE] 通常は0で問題ありませんが rftrans,deliveryを設定している場合は注意が必要です。
6) その他
user_process2_ex.shを編集することにより、より複雑な処理が可能になります。
ここでは,$2,$3を使用していませんが、タイプ別、CH別に違う場所にコピーすることも可能です。
ただし注意点としては、排他処理を行っていないので
同一時間に終了した録音データが干渉しないよう注意する必要があります。
[!NOTE] scpやsftpを使っても同様のことが可能です。
以上