事の発端は、実家の電話機には電話帳機能はあれど、着信履歴が無さそうなのに気付いたこと。この電話機がぶら下がっている ひかりルータ は何度かWebGUIを見てるので、その中に 発着信ログ があるのを思い出しました。高齢者を狙った詐欺は後を絶えず、実際このログを見てみても怪しげな着信があるのを見てとれることから、このルータ内のログを便利に活用してみることにしました。
1. ルータWebGUIからローカルへ定期保存
実家でマルチサーバとして稼働中の Raspberry Pi が、ひかりルータ PR-S300SE へ Basic 認証の上、ログページへアクセス、ローカルの共有フォルダに定期的に保存する仕組みは、curl や sed を駆使して泥臭く実現することが出来ました。ただ、このページが EUC-JP で作られている為、iconv で UTF-8 へ変換しないと化け文字になることが、いかにもみかからしいところ。
2. 保存したログファイルをグーグルドライブにアップロード
こちらの gdrive という優れた仕組みを使うことで、Raspberry Pi からグーグルドライブを操作することが出来ます。アカウント認証もさほど迷うこともありません。いい時代になりました。
実際にはログを格納したフォルダを同期するのですが、グーグル上の同期先フォルダも gdrive のコマンドを使って新しく mkdir 作成しないと軽くハマるので注意です。
3. グーグルドライブ上のフォルダを家族と共有、そしてその閲覧方法
遠くにいる私一人で見守っていてもあまり意味が無いので、日頃近くにいる家族にこれを共有許可して一緒に見てもらうことにしました。ログは html から切り取った table タグなのですが、スマホなどのアプリから単にタップするだけで見ることが出来ます。これは楽。
グーグルドライブへの同期判定は単にタイムスタンプではなく、ハッシュかサイズも見ているようなので、本当にログに変化があった時だけ上書きされるようです。このことから、日頃はグーグルドライブ上のタイムスタンプを見つめていればいい、ということになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#!/bin/sh ## GET PR-S300SE PHONE INCOMING CALL HISTORY AND SYNC TO GDRIVE ## # Const strIURI="http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=incominglog" strOURI="http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=outgoinglog" strCred="*******" strIPath="/mnt/md0/PR-S300SE/incoming.htm" strOPath="/mnt/md0/PR-S300SE/outgoing.htm" # Get html curl -s -u $strCred $strIURI | iconv -f EUCJP -t UTF8 | sed -e '/<table border="1" cellspacing="1">/,/<\/table>/!d' > $strIPath curl -s -u $strCred $strOURI | iconv -f EUCJP -t UTF8 | sed -e '/<table border="1" cellspacing="1">/,/<\/table>/!d' > $strOPath # Sync to Gdrive ~/bin/gdrive sync upload --keep-local /mnt/md0/PR-S300SE *********************************** |