树莓派开机自动发送IP地址至邮箱

本文介绍了如何在树莓派上使用Python3编写脚本,开机时自动发送当前IP地址到指定邮箱。通过两种方法实现开机启动:1) 编辑/etc/rc.local文件;2) 创建autostart文件夹并设定桌面启动文件。

python3代码

这里代码测试使用Thonny编译器在树莓派3B+上运行

注意:树莓派发送邮件需要联网,而联网操作有一定延迟,即网络还未连接,而代码已经运行,所以在代码中加入了10秒延迟以确保在网络连接的情况下执行代码

import socket
import smtplib
import time
#发送者的邮箱
QQMAIL_USER = 'xxxxxxxxxx@qq.com'
#smtp服务的授权码
QQMAIL_PASS = '你自己的授权码'
#smtp的服务类型
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 25
#接受者
recipient1='xxxxxxxxxx@qq.com'
#邮件主题
subject1 = 'ip_address'

def get_host_ip():
#这个方法获取树莓派ip地址并返回
    try:
        s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        s.connect(('8.8.8.8',80))
        ip = s.getsockname()[0]
    finally:
        s.close()
    return ip

def send_mail(input_text):
#这个方法接收一个字符串变量,根据内容发送邮件
    text = input_text
    
    smtpserver = smtplib.SMTP(SMTP_SERVER,SMTP_PORT)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo
    smtpserver.login(QQMAIL_USER,QQMAIL_PASS)
    
    header = 'To:'+recipient1+'\n'+'From:'+QQMAIL_USER
    header = header + '\n' +'Subject:' + subject1 +'\n'
    timeStr = time.strftime(' %Y_%m_%d %H:%M:%S',time.localtime(time.time()))
    msg = header +'\n'+text+'\n'+timeStr+'\n\n'
    smtpserver.sendmail(QQMAIL_USER,recipient1,msg)
    smtpserver.close()

time.sleep(10)
send_mail(get_host_ip())

开机启动设置方法

1、直接编辑 /etc/rc.local文件

例如如果你要执行的程序路径为 /home/pi/Desktop/code/get_ip.py
在rc.local文件里Exit 0 前加入

sudo /usr/bin/python  /home/pi/Desktop/code/get_ip.py

在这里插入图片描述

2、创建autostart文件夹

在 /home/pi/.config 下创建一个文件夹,名称为 autostart,并在该文件夹下创建一个xxx.desktop文件(文件名以.desktop结尾,前面可以自定义),文件内容如下:

[Desktop Entry]
Type=Application
Exec=python /home/pi/Desktop/code/get_ip.py
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值