地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

Raspberry pi 起動時にipアドレスをメール

RaspberryPIで遊ぶときの環境つくり。

 

 DHCP環境下でRaspberryPIを使っているとIPアドレスが分からなくて右往左往することが多い。ディプレイやキーボードをいつもつけているわけでもないし、電源が落ちてしまって再起動しちゃったとか、分からないからだ。

 

 そこで、定番のリブートさせた後のIPアドレスをメールで通知してくれるようにした。

 

raspi.ryo.sc

www.wanna-continue.com

 を参考にしつつ、sSMTP(sendmail)を入れて起動時にメールする仕組みにした。

 

やることは、

  1. sSMTP(sendmail)の設置と設定
  2. IPアドレスを付記したメール送信
  3. 毎回、起動時メール送信のし掛け

 

sSMTP(sendmail)の設置と設定

 設定ファイル(ssmtp.conf)は、簡単だけれども、メールサーバーに仕様によって色々あるので試行錯誤が必要だった。専用のgmail作ろうかと思ったが、それはそれで面倒なので、レンタルサーバを使うこととした。

 

 /var/log/mail.err みながらエラーを確かめつつ・・・。mail コマンドで送信ができることが確認できたら、次にIPを入れ込んで送信するshellスクリプトを作ります。

 

IPアドレスを付記したメール送信

参考にさせていただいたものからほぼ頂いてshellスクリプトにした。

!#/bin/bash

ip_add=$(hostname -I | cut -f1 -d' ')
title="$(hostname) restarted"
echo $ip_add | mail -s "$title" <mail address>

 これで何度かテスト。なお、これだと複数IP持っていると最初の一つしか送られてきませんので注意。VNC接続だけだと今のところこれで十分。

 

毎回、起動時メール送信のし掛け

 実現できる方法が複数ある。rc.localとかsystemdとか。rc.localが一般的なきがするけれども、調べるとbootでネットワーク起動のタイミングによっては正しい値が採取できない。設定弄るのもメンドイし、そんな大層な仕掛けでもない。そこで、cronでもできるらしいので採用。起動時にネットワークが立ち上がるまで待つためにsleep 30(sec)入れておいた。

 cronなら後で一日一回メールといった設定追加も簡単。

 

!#/bin/bash

sleep 30;

ip_add=$(hostname -I | cut -f1 -d' ')
title="$(hostname) restarted"
echo $ip_add | mail -s "$title" <mail address>

  

これもテストをした後、cronに登録。

qiita.com

 

@reboot 指定でOK。

 

自動起動の仕方とその比較です。勉強になります。

hendigi.karaage.xyz

 

というわけで、再起動したらIPアドレスの通知メールが来るようになりました。

 

意外とsSMTPの設定で手間取った。