Python实现树莓派开机自动获取IP并发送至邮箱

许南星
许南星
发布时间:2026-10-13| 5人浏览过
原创

针对树莓派无显示器且需移动使用的场景,本文介绍如何使用Python脚本在开机后自动获取本机IP地址,并通过SMTP协议发送至指定邮箱。内容涵盖网络接口遍历、IP提取、邮件发送函数实现,以及通过修改/etc/profile实现脚本开机自启的完整配置步骤,帮助开发者便捷管理远程设备网络状态。

由于树莓派通常不连接显示器,且为了避免设置固定IP带来的不便(因为设备需要随身携带,不同网络环境的网段可能不同),本文旨在通过Python编写一个脚本,实现树莓派开机后自动获取本机IP,并自动发送到指定的邮箱地址。(完整源码)

第一步是获取所有连接的网络接口,例如有线网卡和Wi-Fi接口等。

def get_ip_address():

  #先获取所有网络接口
  SIOCGIFCONF = 0x8912
  SIOCGIFADDR = 0x8915
  BYTES = 4096     
  sck = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  names = array.array('B',b'\0' * BYTES)
  bytelen = struct.unpack('iL', fcntl.ioctl(sck.fileno(), SIOCGIFCONF, struct.pack('iL', BYTES, names.buffer_info()[0])))[0]
  namestr = names.tostring()
  ifaces = [namestr[i:i+32].split('\0', 1)[0] for i in range(0, bytelen, 32)]

  #再获取每个接口的IP地址
  iplist = []
  for ifname in ifaces:
    ip = socket.inet_ntoa(fcntl.ioctl(sck.fileno(),SIOCGIFADDR,struct.pack('256s',ifname[:15]))[20:24])
    iplist.append(ifname+':'+ip)
  return iplist

第二步是将获取到的IP地址通过邮件发送到指定的邮箱地址。

def ip_send_mail(iptxt):

  #设置收件邮箱
  toaddrs = 'to@mail.com'
  #设置发送邮箱
  fromaddr = 'send@mail.com'

  #设置发送邮箱的账号密码
  username = 'your_sendmail@mail.com' 
  password = 'your_pass'

  #设置SMTP服务器、端口,根据你的邮箱设置,
  server = smtplib.SMTP('smtp.mail.com:25')
  #设置邮件正文,get_ip_address()返回的是list,要转换成str
  ip = '\r\n'.join(iptxt)

  #设置邮件标题和正文
  msg = MIMEText(ip,'plain', 'utf-8')
  msg['Subject'] = 'IP For RaspberryPi'
  msg['From'] = fromaddr
  msg['To'] = toaddrs

  #启动SMTP发送邮件
  server.ehlo()
  server.starttls()
  server.login(username,password)
  server.sendmail(fromaddr, toaddrs, msg.as_string())
  server.quit()

第三步是调用上述定义的函数来执行整个流程。

if __name__ == '__main__':

  #获取IP
  iptxt = get_ip_address()
  #将IP存入文件,如果直接发送邮件,这步可以省略。
  ip_save_file(iptxt)  
  #将IP地址发送到指定邮箱
  ip_send_mail(iptxt)

第四步是配置系统,使脚本在开机时自动运行。

将上述所有代码整合到一个文件中,并将该文件放置在树莓派的存储卡中,例如路径:/home/pi/get_ip_address.py

接下来,需要给Python脚本赋予可执行权限。

sudo chmod +x get_ip_address.py

最后,设置系统在启动时运行该脚本。

sudo vi /etc/profile

编辑profile文件,在文件的最后部分,即fi语句之前,添加以下代码:

python /home/pi/get_ip_address.py

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。