树莓派远程管理新方法-邮件控制

今天和同事尝试了一个新的方法来管理树莓派,就算是没有花生壳也可以管理非交互式管理你的树莓派,而且配置起来及其简单。下面就来和大家聊聊如何实现的。

特点和需求:

  1. 树莓派需要安装php7.2-curl 和php7.2-cli 的包(后面会详细介绍如何安装)后来想了想,只要是个能够支持Linux系统并且支持php脚本的主机都可以用。

  2. 需要去testmail.app站点注册一个账号,用来处理邮件的测试

  3. 开启QQ邮箱的imap功能,并获取验证Token 能够让树莓派或者linux主机发送邮件到你定义接受反馈的邮箱。

     

   4. 配置mail.php 脚本,当然已经写好了,只要去修改若干参数就可以使用,非常简单。

接下来我就用图示的步骤一步步演示一下如何操作:

先打开浏览器,输入:testmail.app然后访问到其官方页面,打开signup

微信图片_20200115101421

 

输入你能够接受邮件的邮箱,然后你会通过邮箱获得一个验证码。

微信图片_20200115101457

这里要输入你邮箱里收到的验证码:

微信图片_20200115101524

我的验证码是中间的2105215, 我输入到上面那个框中就可以验证通过并登陆到控制台了

微信图片_20200115101553

在控制台上我简单看了看目前看可以选择的类型,有Free的,就是永久免费用,但是有限制,最直接的是每月就100封邮件,这个对于我们做IoT实验的人来说,有点儿少了,但是如果你只是看看树莓派的状态,或者执行一些简单的脚本的话,还是非常方便的。我们测试就先选择它了。

微信图片_20200115101630

注册成功后,就进入了console控制台,你可以看到左侧是quickstart,namespaces等树形结构的控制台,右侧可以看到Namespaces, quickstart里面会告诉你只要发送邮件给一个邮箱就可以使用GraphQL来通过邮件取回你发送的命令的结果了,我其实就是要用到这里面的Namespaces,还有API key的信息,通过这两个信息来通过验证,然后在定义好的QQ邮箱里面看到树莓派执行的命令的结果。 

思路是: 

  1. 发邮件给xxx.xxx@inbox.testmail.app , 邮件的内容为你想要在树莓派上执行的非交互式命令,例如,我想看看ip地址,就直接ifconfig作为邮件的正文内容,标题随便你写。

  2. 这个邮箱会发送邮件到你的树莓派,树莓派上通过使用nickfox-taterli写的php脚本:mail.php 来执行解析,并获取命令ifconfig,然后在本地执行,并将执行结果发送给你定义好的QQ邮箱。

  3. 如此往复,就可以通过邮件来管理树莓派了,例如深入一些就是你可以写个shell或者python脚本,通过发一封邮件给树莓派,让它本地执行,然后返回结果给你邮箱,这样你在任何地方,只要能发邮件,就能够管理你的树莓派,这样就让管理变的更加简单了。

注意,这里的Namespaces位置下方有copy namespace,或者你可以手工记录下来,我这里的namespace是根据创建的账户自动生成的,为了安全我打了马赛克,邮箱的格式是: {namespaces}.{tag}@inbox.testmail.app, 我这里的是9ilg.rpi4b@inbox.testmail.app, 这里的namespace就是9ilg, tag就是rpi4, 换了tag就像开了新邮箱一样。可以有很多个,你如果树莓派好几个,就可以多做几个tag。这里的信息后面要用,记录下来。tag用小写,不要超过5个字符。还有API Key后面httpheader验证的时候要用到,也复制下来保存。

微信图片_20200115101707

注册完testmail.app后,登陆你的qq邮箱,如果没有qq邮箱的,我不建议用163.com来做实验,因为同事说遇到过163.com无法发送英文邮件,会被当成垃圾邮件丢弃的,我测试的时候只用了qq邮箱,虽然发件有时候比较慢,但是总体上效果还是挺好的。

配置qq邮箱也非常简单,登陆mail.qq.com后,找到邮箱设置选项:

微信图片_20200115101755

一直往下翻,找到这段内容停下并配置:

微信图片_20200115101825

  1. 开启IMAP/SMTP服务,这个是网络邮件访问协议,允许通过网页访问邮箱的,走TCP的143端口,开启后,要记得生成授权码,这个授权码只在你生成的时候产生一次,所以最好记住了!(拿个小本子记一下,或者给它拍个照片或者截图)后面会用到哦。

接着继续就会遇到这个提示,选择立即升级。

微信图片_20200115101854

QQ的验证密保做的也不错,短信验证一下。

到手机上编辑: 配置邮件客户端 然后发送到1069070069的这个账号上,然后就1毛钱花掉了。

然后页面上会收到一个授权码

微信图片_20200115101920

微信图片_20200115101945

授权码我打了马赛克,你们懂的。然后这个授权码要记住,后面会用到。

上面两个步骤做完,就差不多接近尾声了,下面我们需要登陆到树莓派上,确保树莓派已经接入网络,然后执行下面的操作:

  1. 安装php7.2-curl 和php7.2-cli的软件包:

sudo apt -y update && sudo apt -y install php7.2-curl  php7.2-cli 

微信图片_20200115102013

   2. 测试php是否安装成功.

php -v

微信图片_20200115102040

这样,基本环境就搭建好了,接下来我们去下载SDK:

git clone https://github.com/nickfox-taterli/mail-control-linux 

微信图片_20200115102130

然后进入目录编辑mail.php文件:

vim.tiny  /home/pi/mail-control-linux/mail.php

修改里面namespace部分的内容,这里的namespace是从testmail.app 的console后台获取的,见前面的内容。填写你的namespace和tag的内容,然后往下翻。

微信图片_20200115102159

这里的Host 后面的内容你如果用qq邮箱,就改成 stmp.qq.com;

Username 就写的你的qq邮箱;

Password 这里写你前面获取到的授权码,不是你的qq密码哦,是qq邮箱开启时候的授权码。SetFrom和addAddress 都写自己的qq邮箱,因为自己发给自己的邮件拥有天然白名单,就是不会被当成垃圾邮件。这里的AddReplyTo后面的邮箱就写你在testmail.app上生成的邮箱,我这里是9ilg.rpi4b@inbox.testmail.app, 你们根据实际情况改成自己的。

微信图片_20200115102259

我改好后就是这样了,你们的应该和我类似,用方法2 里面的模板改。

微信图片_20200115102323

在最下面还需要改一个httpheader, 验证的key,就用testmail.app控制台上的key内容

微信图片_20200115102409

改好了保存退出。

然后再到终端执行:

php mail.php

微信图片_20200115102436

它默认会阻塞在这里,现在我们去qq邮箱发个邮件给树莓派,看看效果,我输入了邮箱地址,主题是Mail-control-RaspberryPi-4B,然后正文就是要让树莓派执行的命令, 这里我先看看ip地址,就用了ifconfig。

微信图片_20200115102549

然后很快就会收到回复:

微信图片_20200115102641

很好玩儿,继续再测试,我在树莓派上扣了一块sensor hub,就是这货:

微信图片_20200115102726

然后我发邮件给树莓派:

微信图片_20200115102752

得到这个效果,还有弹窗提示,哈哈,不错

微信图片_20200115102903

另外,另一封邮件是来自我输入的脚本获取气压值和人体红外检测数据:

微信图片_20200115103021

然后手机上也下载了一个QQ邮箱,

微信图片_20200115103107

通过手机发送了一封邮件试了一下;

微信图片_20200115103136

毫无压力,通过这次测试发现可以管理树莓派的方法更灵活更多样化,在没有花生壳的时候也可以管理树莓派,不会定义APP没关系,邮件会发就可以用,而且后期还准备扩展一些本地的应用程序,例如收到邮件后,直接在后台进行下载操作。可玩而性更高了,为了让树莓派开机自动运行这个脚本,我编辑了一下/etc/rc.local 文件:

下图中红色框里面的就是,“&”这个符号的意思是放进后台执行,不会随着前台终端的断开而结束,它会一直监视着邮件的状态,大家回家就可以试试看啦。

常见获取信息命令一览表:

uname -a 获取系统版本信息

lsb_release -a 获取发行版本信息

cat /proc/cpuinfo 查看cpu信息

lsusb  查看usb接口信息

free -m 查看内存状态

dmesg 检查内核开机硬件消息

vcgencmd measure_temp 查看CPU温度信息

df  -Th  查看磁盘利用率

uptime 查看开机时间和系统负载

注:文章来源于网络,如有侵权请联系删除。

2020年1月15日 10:12