• 树莓派开机发ip到邮箱


    树莓派采用DHCP连接到局域网中,每一次登陆IP都会改变,虽说使用ipscan扫描局域网可以解决,但是非常麻烦。

    经过一番搜索,终于找到了解决方案。资料来自(技术贴)如何让你的树莓派开机将ip发到你的邮箱

    在实现过程中遇到了一些问题,应该是由于资料采用的python版本较早,而我采用的是3.4版本,所以会出现一些语法错误。

    例如:print 在python2中是语句,在python3中是函数,所以 print ()  才是正确的。

    python异常早期语句是: Exception,ex:   现在是 except Exception as e:

    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
    
    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)
        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 as e:
                print (e)
                print ("Network is not ready,Sleep 5s....")
                time.sleep(5)
        return True
    
    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','发送邮件的邮箱(我采用的是163邮箱)','发送邮件的邮箱的密码','发送邮件的邮箱',['接收邮件的邮箱'],'IP Address Of Raspberry Pi',ipaddr)

    以上代码只需修改发送邮箱和接收邮箱就可以在树莓派raspbain系统中使用,smtp.163.com是163的服务器,可以类似修改成其他服务器,不懂可搜索相关smtp资料。

    接下来在/home/pi目录下执行python脚本

    python send-ip.py

    执行成功便可以收到邮件

    再来将python添加到树莓派的开机启动中去

    首先进入root账户(sudo -s)
    cd /etc
    nano rc.local
    在fi后面添加这一行


    python /home/pi/send_ip.py(此处与找到的资料不同)



    重启树莓派(sudo reboot),邮箱就会有树莓派的ip了。

  • 相关阅读:
    2021昆明站K-Riichi!!(麻将)
    数据结构 Week 3 --- dsu on tree 和 点分治
    数据结构 Week 2 --- 平衡树
    数据结构 Week 1 --- 从线段树到主席树
    一些思维题(三)
    一些思维题(二)
    2021ICPC昆明站总结及补题
    2021ICPC昆明M题 非主席树做法
    2020ICPC昆明参赛
    记5.28leetcode简单题
  • 原文地址:https://www.cnblogs.com/Arvin-9/p/5050189.html
Copyright © 2020-2023  润新知