这篇文章主要为大家详细介绍了python实现自动获取IP并发到邮箱,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

树莓派没有显示器,而不想设置固定IP,因为要随身携带外出,每个网络环境可能网段不一样。因此想用python写个脚本,让树莓派开机后自动获取本机ip,并且自动发送到我指定邮箱。(完整源码)

1.获取所有连接的网络接口,比如有线、wifi等接口

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

2.把IP地址发送到指定邮箱

def ip_send_mail(iptxt):

  #设置收件邮箱
  toaddrs = '[email protected]'
  #设置发送邮箱
  fromaddr = '[email protected]'

  #设置发送邮箱的账号密码
  username = '[email protected]' 
  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()

3.最后调用以上函数运行即可

if __name__ == '__main__':

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

4.设置开机运行

把以上代码都放入一个文件,把文件放到树莓派卡里面,如: /home/pi/get_ip_address.py

给python脚本可执行权限

sudo chmod +x get_ip_address.py

设置系统启动时运行

sudo vi /etc/profile

编辑profile文件,在profile最后面,fi之前添加如下:

python /home/pi/get_ip_address.py

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

    无相关信息
最新资讯
科比不幸坠机遇难背后:直升机为何无法跳伞?

科比不幸坠机遇难背后

逝者已去,生者已矣,科比面对强敌无所畏忌的精神会传承下
微众银行向武汉捐赠1000万元抗击肺炎疫情

微众银行向武汉捐赠10

微众银行向湖北省慈善总会捐赠人民币1000万元,全力支持
武汉雷神山医院完成5G部署 推进“5G+智慧医疗”

武汉雷神山医院完成5G

中国工业和信息化部28日晚间表示,湖北通信业全面完成雷
京东物流已承接近400家机构捐赠运输需求

京东物流已承接近400

京东物流公布数据显示,截止到1月28日16点,京东物流已累
携程推出退改供应商政策,开始接受供应商损失预报

携程推出退改供应商政

携程表示,“携程作为旅游服务平台,一直秉持着客户第一、
超350名亚马逊员工抗议 要求放弃石油公司云计算合同

超350名亚马逊员工抗

有超过350名的亚马逊员工,冒着失去工作的风险,公开对公
最新文章
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件

使用PyInstaller将Pyg

这篇文章主要介绍了使用PyInstaller将Pygame库编写的
Python数学形态学实例分析

Python数学形态学实例

这篇文章主要介绍了Python数学形态学,结合实例形式分
Python scipy的二维图像卷积运算与图像模糊处理操作示例

Python scipy的二维图

这篇文章主要介绍了Python scipy的二维图像卷积运算与
python自动发微信监控报警

python自动发微信监控

这篇文章主要为大家详细介绍了python自动发微信监控报
修改 CentOS 6.x 上默认Python的方法

修改 CentOS 6.x 上默

这篇文章主要介绍了修改 CentOS 6.x 上默认Python的方
Python使用Slider组件实现调整曲线参数功能示例

Python使用Slider组件

这篇文章主要介绍了Python使用Slider组件实现调整曲线