LoginSignup
3
2

More than 5 years have passed since last update.

ラズパイ起動後にIPをメールで自動送信

Last updated at Posted at 2017-12-19

ラズパイ起動後にIPをメールで送信

最初はGmailでやろうと思ったんですけど、セキュリティ的に弾かれたので別の方法にしました。

また、ここではメールの送信サーバをインストールしてやってますが、めんどくさかったので、送信専用のウェブページ作って、そこをpythonで自動的に送信させよう。(どっちがめんどくさいかは考えない)
http://raspi.seesaa.net/article/421958492.html

実際は下記になります。

流れ

  1. 送信用メールフォームのあるwebページを作る
  2. そのページからメールを送るようなpythonプログラムを作る
  3. ラズパイからそのプログラムを自動で実行するよう設定する

メール送信するページ作成

どこかで作ったやつをそのまま持ってきました。

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()

結果

ss.jpg

少し余計なものも来てますが、十分ですのでこのままいく!

以上です。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2