OSの通知をNextcloudに送る機能を使って、実際にOSの通知を送信してみます。

今回は、HDDなどのストレージの状態を監視するsmartmontoolsが送信するメールの内容だけを取り出してNextcloudに通知します。(メールの内容を取り出すと書きましたが、メール関係の機能は一切使いません。)

ついでに、定期的にS.M.A.R.T.のセルフテストを行うように設定します。

実装

smartmontoolsをインストールします。

sudo apt install smartmontools

smartmontoolsのデーモンであるsmartdから呼び出されるスクリプトを実装します。

sudo vi /root/sh/smartd.sh
#!/bin/bash
/root/sh/nextcloud_notification.sh "$SMARTD_MESSAGE" "$SMARTD_FULLMESSAGE"

smartdのconfigを編集します。

sudo vi /etc/smartd.conf

もともと入っている"DEVICESCAN"から始まる行をすべてコメントアウトする

#DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner

ファイルの末尾に以下を追記

DEVICESCAN -a -o on -S on -s (O/../.././(00|06|12|18)|S/../.././01|L/../../6/03) -W 4,35,40 -m root -M exec /root/sh/smartd.sh

サービスを再起動します。

sudo systemctl restart smartmontools

動作確認

テストメッセージを出すには、configを変更します。

DEVICESCAN ... の末尾に"-M test"を追記します。

DEVICESCAN -a -o on -S on -s (O/../.././(00|06|12|18)|S/../.././01|L/../../6/03) -W 4,35,40 -m root -M exec /root/sh/smartd.sh -M test

smartmontoolsを再起動すると、通知が行われます。

sudo systemctl restart smartmontools

smartmontools起動時に通知が行われます。問題ないことを確認したら、追加した末尾の"-M test"を削除してsmartmontoolsを再起動します。

参考資料

smartd.conf(5) - Linux man page

LinuxでHDDのSMARTをモニタリングする - ふなWiki

サンプルスクリプト(smartmontools と一緒にインストールされる)
/usr/share/doc/smartmontools/examplescripts/