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

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

针对树莓派无显示器且需移动使用的场景,本文介绍如何使用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 相关产品和应用

全部下载

专题列表