python实现自动获取IP并发送到邮箱


Posted in Python onDecember 26, 2018

树莓派没有显示器,而不想设置固定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 = '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()

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

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

Python 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
Django模板语言 Tags使用详解
Sep 09 Python
python flask中动态URL规则详解
Nov 22 Python
简单了解python数组的基本操作
Nov 26 Python
PyCharm 专业版安装图文教程
Feb 20 Python
python数据类型可变不可变知识点总结
Mar 06 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
python 实现分页显示从es中获取的数据方法
Dec 26 #Python
python 获取页面表格数据存放到csv中的方法
Dec 26 #Python
python 产生token及token验证的方法
Dec 26 #Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 #Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 #Python
python处理multipart/form-data的请求方法
Dec 26 #Python
Python实现的简单线性回归算法实例分析
Dec 26 #Python
You might like
php实现window平台的checkdnsrr函数
2015/05/27 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
JQUERY获取form表单值的代码
2010/07/17 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python输入二维数组方法
2018/04/13 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
html5图片上传预览示例分享
2014/04/14 HTML / CSS
新电JAVA笔试题目
2014/08/31 面试题
中专毕业生的自荐书
2014/07/01 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
2014年医院工作总结
2014/11/20 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android