ラズパイ起動後にIPをメールで送信
最初はGmailでやろうと思ったんですけど、セキュリティ的に弾かれたので別の方法にしました。
また、ここではメールの送信サーバをインストールしてやってますが、めんどくさかったので、送信専用のウェブページ作って、そこをpythonで自動的に送信させよう。(どっちがめんどくさいかは考えない)
http://raspi.seesaa.net/article/421958492.html
実際は下記になります。
流れ
- 送信用メールフォームのあるwebページを作る
- そのページからメールを送るようなpythonプログラムを作る
- ラズパイからそのプログラムを自動で実行するよう設定する
メール送信するページ作成
どこかで作ったやつをそのまま持ってきました。
index.html
<html>
<body>
    <form id="campaign" name="campaign" action="confirm.php" type="post" method="post">
        <p><input type="text" name="ip" id="ip"/></p>
        <input type="submit" value="SUBMIT" />
    </form>
</body>
</html>
confirm.php
<?php
    mb_language("Japanese");
    mb_internal_encoding("UTF-8");
    $to      = 'メールアドレス';
    $subject = 'Raspberrypi IP address';
    $ip=htmlspecialchars($_POST["ip"]);
    $message = $ip;
    $headers = 'From:'. $email . "\r\n";
    mb_send_mail($to, $subject, $message, $headers);
?>
ここのURLをhttp://autosendmail.com とします
ラズパイの自動化設定
/home/pi/lxsession/LXDE-pi/autostart
上記ファイルの一番下にこれを追加(ラズパイのOSによって異なると思うので、適宜ググってください。)
@python /パス/autosend.py
ちなみにautosend.pyの中身。
autosend.py
import netifaces
import mechanize
myip = []
def detectip():
    for iface_name in netifaces.interfaces():
        iface_data = netifaces.ifaddresses(iface_name)
        ip_adressList = iface_data.get(netifaces.AF_INET)
        if ip_adressList != None:
            ip_address = ip_adressList[0]['addr']
            myip.append(ip_address)
    return myip
def sendmail():
    br = mechanize.Browser()
    br.open("http://autosendmail.com")
    br.select_form(nr=0)
    br["ip"] = str(detectip())
    br.submit()
if __name__ == "__main__":
	sendmail()
結果
少し余計なものも来てますが、十分ですのでこのままいく!
以上です。

