前回からの続きである。
前回の構成では録画していない時間帯では5分でシャットダウンしてしまうため、crontabをコメントアウトしないと作業もできない状況になってしまっていた。そこで「使っていない検知」としてwhoコマンドを入れ、ログイン中は落ちない仕組みを作った。あと、電源入れてションベンして帰ってくると落ちてるという事故を繰り返したため、uptimeが15分を過ぎるまで落とさない仕組みを作った。
#!/bin/sh C=`who -u | wc -l` if [ "$C" != "0" ]; then exit 1 fi exit 0
code: loginFree
#!/bin/sh UTIME=`uptime -s` BASE=`date -d"$UTIME" +%s` EXP=`date -d-15min +%s` [ "$BASE" -lt "$EXP" ] exit $?
code: up15min
raspberry piからはnfsマウントをしてビデオを再生する構成にしているため、showmountコマンドでnfs利用の監視を試みたが切断しても接続の情報が残ってしまい確実ではなかった。
そこでraspberry piからシステム起動時にsshセッションを張り、利用を録画サーバに知らせる方法を考えた。
rpiのArch向けにsystemdのスクリプトを作った。以下はsshを非対話モードで動かす設定である。下記を作成し、systemctl enable naslogin と打つだけで起動時に勝手に動いてくれる。詳細はリファレンスを参照されたい。 hostkey.id_ecdsaなどは作成し、予め対話なしでログインできるようにしておくこと。
[Unit] Description=Begin login beacon for nas After=network-online.target [Service] Type=simple ExecStart=/usr/bin/ssh -o BatchMode=yes -t -t -i /etc/hostkey.id_ecdsa chinachu@myhost.local ping -i 10 localhost > /dev/null Restart=on-failure [Install] WantedBy=multi-user.target
code: /usr/lib/systemd/system/naslogin.service
*/5 * * * * /usr/local/bin/up15min && /usr/local/bin/chinachuFree && /usr/local/bin/loginFree && ~root/shutmail.sh && sleep 10 && /sbin/shutdown -h now
code: crontab -e
rpiをブチ切りした時は1時間程セッションが残ってしまうようだが、概ね良好である。
コメントを残す