Raspberry Piに自身の状態を定期報告させる
2016/05/25
RaspberryPiに自分の状態を一日一回定期報告させるようにします。稼働時間、ディスク使用量、CPU温度、電圧を自動取得して、gmailで定期的に送信させます。
稼働時間を表示する
稼働時間を表示するコマンド
$ uptime
入力すると次のように表示されます。
23:14:21 up 54 days, 15:15, 1 user, load average: 0.17, 0.73, 0.55
現在時刻は23時14分21秒、稼働時間54日15時間15分、ユーザー数1、平均のシステム負荷はほぼ0となっています。
ディスク使用量を表示する
$ df -h
入力すると次のように表示されます。
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 5.6G 3.7G 1.7G 70% /
devtmpfs 237M 0 237M 0% /dev
tmpfs 49M 252K 48M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 97M 68K 97M 1% /run/shm
/dev/mmcblk0p5 60M 20M 40M 33% /boot
5.6GBのディスク容量のうち3.7GB、70%を使っているのがわかります。ちなみにSDカードは8GBを使用しています。
CPU温度を表示する
$ vcgencmd measure_temp
入力すると次のように表示されます。
temp=45.5'C
真夏には55℃に達することもあります。
電圧を表示する
$ vcgencmd measure_volts
入力すると次のように表示されます。
volt=1.2000V
この数値はいつも変わりません
各コマンドをまとめてシェルスクリプトにする
コマンドを並べただけの簡単なシェルスクリプトを作成し、state.sh と名前をつけて保存します。
#!/bin/sh # 起動時間 uptime # ファイルシステム df -h # cpu温度 vcgencmd measure_temp # 電圧 vcgencmd measure_volts
実行します。
$ sh state.sh
結果
00:00:01 up 59 days, 16:00, 0 users, load average: 0.01, 0.25, 0.39
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 5.6G 3.7G 1.7G 70% /
devtmpfs 237M 0 237M 0% /dev
tmpfs 49M 252K 48M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 97M 68K 97M 1% /run/shm
/dev/mmcblk0p5 60M 20M 40M 33% /boot
temp=44.4'C
volt=1.2000V
メールで送るようにする
Muttを利用してメールを送信する設定をします
Muttのインストール
Muttはテキストベースのメールクライアントです。
sudo apt-get install mutt
Muttの設定
/home/pi/bin/mutt.conf を編集します
set charset="utf-8" set send_charset="us-ascii:iso-2022-jp" set from = "hoge@gmail.com" set realname = "ラズパイサーバー" set smtp_url = "smtp://hoge@smtp.gmail.com:587/" set smtp_pass = "hoge"
送信してみる
$ sh /home/pi/state.sh | mutt -F /home/pi/bin/mutt.conf -s "定期報告" hoge@gmail.com
state.shの結果をhoge@gmail.comへ「定期報告」というタイトルを付け、mutt.confの設定で送信します
定期的にメールを送信する
cronを設定してRaspberry Piから定期報告するようにします
$ crontab -e
#毎日0時に定期報告を実行する 00 0 * * * sh /home/pi/state.sh | mutt -F /home/pi/bin/mutt.conf -s "定期報告" hoge@gmail.com
定期報告の頻度はRaspberryPiの使用目的によって変わると思います。今回は一日一回の生存確認としました。
2016-05-23追記
メッセージの簡略化と見やすさ変更
ディスクドライブの使用量と見やすさを少し変更します。
#!/bin/bash # #稼働時間 echo 稼働時間 uptime echo #wlan0のipアドレスを表示する echo IPアドレス `sudo ifconfig wlan0 | grep 'inetアドレス:' | sed -e 's/^.*inet アドレス://' -e 's/ .*//'`; echo #ディスク・ドライブの使用量 echo ドライブの使用量 df -h Documents/ echo #CPUの温度を表示する echo CPU温度 `vcgencmd measure_temp` echo #電圧を表示する echo 電圧 `vcgencmd measure_volts`
結果
稼働時間
22:40:26 up 167 days, 22:46, 4 users, load average: 0.33, 0.30, 0.25
IPアドレス 192.168.0.8
ドライブの使用量
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 13G 4.4G 7.4G 38% /
CPU温度 temp=54.6'C
電圧 volt=1.2000V
すっきりとして少し見やすくなりました。