[树莓派]自动发送本机ip到指定邮箱

     2014年05月30日       磊磊syh       非专业笔记->折腾专栏       Raspberry 

如何才能知道树莓派的ip地址

我使用树莓派的时候,只是想ssh上去执行一些操作,而树莓派的ip地址又是dhcp的。接显示器键盘看树莓派地址实在麻烦。

让树莓派主动告诉我

于是想了一个办法,当树莓派开机启动的时候,自动执行一段python脚本,然后发到指定邮箱。这样我们就不需要显示器就可以知道树莓派的ip地址了。

抛砖引玉,让脚本跑起来

我发邮件使用了python脚本,如下可以供看官参考。

#/bin/env python
# -*-coding:utf8-*-
import socket
import fcntl
import time
import struct
import smtplib
import urllib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

#发送邮件的基本函数,参数依次如下
# smtp服务器地址、邮箱用户名,邮箱秘密,发件人地址,手贱儿女地址(列表的方式),邮件主题,邮件html内容
def sendEmail(smtpserver,username,password,sender,receiver,subject,msghtml):
    msgRoot = MIMEMultipart('related')
    msgRoot["To"] = ','.join(receiver)
    msgRoot["From"] = sender
    msgRoot['Subject'] =  subject
    msgText = MIMEText(msghtml,'html','utf-8')
    msgRoot.attach(msgText)
    #sendEmail
    smtp = smtplib.SMTP()
    smtp.connect(smtpserver)
    smtp.login(username, password)
    smtp.sendmail(sender, receiver, msgRoot.as_string())
    smtp.quit()

# 检查网络连同性
def check_network():
    while True:
        try:
            result=urllib.urlopen('http://baidu.com').read()
            print result
            print "Network is Ready!"
            break
        except Exception , e:
           print e
           print "Network is not ready,Sleep 5s...."
           time.sleep(5)
    return True

# 获得本级制定接口的ip地址
def get_ip_address():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("1.1.1.1",80))
    ipaddr=s.getsockname()[0]
    s.close()
    return ipaddr

if __name__ == '__main__':
    check_network()
    ipaddr=get_ip_address()
    sendEmail('smtp.163.com','网易邮箱账号','网易邮箱密码','邮箱邮箱地址',['收件人地址'],'IP Address Of Raspberry Pi',ipaddr)

好了,脚本保存为send_ip.py,然后在/etc/rc.local里加上下面这行

/usr/bin/python /home/pi/send_ip.py