mdadmの警告をTwitterに通知する

mdadmでRAIDアレイを構築したものの、アラートを設定していなかった。
ただ、この2017年にメールクライアントの設定するのはとてもだるかったため、Twitterのアカウントに通知を行いたくなった。

mdadmのアラート

mdadmにはprogramという引数があり、どうやら警告が発生した時にその引数で指定されたプログラムが実行されるらしい。
下のサイトによると、programに指定されたプログラムに2,3個の引数を渡すと書いてある。
https://linux.die.net/man/5/mdadm.conf

適当に作成したプログラムを指定してみるとリビルド終了時に以下の引数が送られてきた。

program.py RebuildFinished /dev/md0

Twitterクライアントの作成

数行でTwitterクライアントが作れるTweepyというPythonライブラリを使用して作成した。
https://github.com/RASBORA/mdadm-twitter-alert

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import tweepy
import sys
import os.path

CONSUMER_KEY = 'bHvXbznxDz0UhaKz7q1BHetOY'
CONSUMER_SECRET = 'tC5RNt2d9lLW9PT9M2qVyi8kz28U2fRyVBI3oKfRarodUU0GuC'

app_path = os.path.dirname(os.path.abspath(__file__))

ACCESS_TOKEN = open(os.path.join(app_path,'ACCESS_TOKEN'), 'r').read()
ACCESS_SECRET = open(os.path.join(app_path,'ACCESS_SECRET'), 'r').read()

# Authorize
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)

# Create tweet
TWEET_HEADER = u'' # example: u'@user'
TWEET_FOOTER = u'#Alert'

text = TWEET_HEADER + u' \n'
for arg in sys.argv[1:]:
    text += arg + u'\n'

text += TWEET_FOOTER

# Send tweet
api.update_status(status=text)

テストメッセージ送信

mdadm --monitor --scan --oneshot --test

Twitterに投稿できた.
mdadm twitter