当前位置: 代码迷 >> PB >> 树莓派(raspberry pi)学习17:小弟我的树莓派在哪? -找回丢失的树莓派
  详细解决方案

树莓派(raspberry pi)学习17:小弟我的树莓派在哪? -找回丢失的树莓派

热度:246   发布时间:2016-04-29 06:58:24.0
树莓派(raspberry pi)学习17:我的树莓派在哪? --找回丢失的树莓派


如果树莓派丢了, 如何定位它在哪?如何找到它呢?


这位外国网友真有创意,写了一个脚本,能自动向主人汇报自己的树莓派在哪

http://raspi.tv/2012/wheres-my-pi-pifind-locate-your-missing-raspberry-pi

(不喜欢看英文的同学,没关系,不用看他的,看我这篇就足够了)

他实现了一个功能,树莓派启动时,自动向自己的邮箱发一个邮件,邮件内容包括 CPU串码和本机IP地址,可用于寻找自己的树莓派

不过,这位网友的脚本有个缺陷: 如果树莓派是在内网中启动的,则IP地址为内网地址,不能汇报其外网地址,是没有用的。


于是,我改进了一下,说明如下:


原理:


1,每个树莓派的CPU都有一个串码(Serial),可以用以下命令查看

cat /proc/cpuinfo

最后一行就是串码


2, 查看本机IP配置的命令是

ifconfig


3, 查找本机的外网地址,只需要向 http://checkip.dyndns.org 发起一个HTTP请求,返回的网页中,就有IP地址。


4, 在树莓派启动时,自动运行一个脚本,运行上述两个命令和一个HTTP请求,把IP信息、CPU串码读出,再发一个邮件出去



下载脚本:

   这个脚本是用Python 语言写的,在此下载 http://download.csdn.net/detail/c80486/5032189  

   脚本文件名为 pyfind.py

   脚本中写有接收信息的邮箱地址、SMTP服务器、SMTP登录用户名和密码、发件人信息等。下载后用文本编辑器打开脚本,自行更改这些参数。

   相关设置行如下:

# Settings
fromaddr = [email protected]'      #发件人邮箱
toaddr  = [email protected]'         #接收人邮箱

#mail login details
username = 'pi000001'      #SMTP登录用户名
password = 'p123456'       #SMTP登录密码
smtp_server = 'smtp.126.com'   #SMTP服务器

   我新申请了一个126邮箱,[email protected],密码是p123456,SMTP服务器是smtp.126.com

   看不懂Python脚本的同学,只要懂得修改这几行就行了。

   看得懂Python脚本的同学,可以研究一下。(其中查找外网IP地址的功能,是我在原作基础上增加的)

把脚本复制到树莓派的pi用户主目录,即:   /home/pi/pyfind.py


将脚本设置为开机自动运行

修改 rc.local文件

sudo nano /etc/rc.local 


在文件末尾 ,在exit 0 这一行之前,加入一行

python /home/pi/pifind.py


存盘退出。

下次启动,即可自动运行此脚本了。


脚本一运行,就会向脚本中指定的邮箱发出一封邮件

标题:Your Raspberry Pi XXXXXX just booted         ( 其中 XXXXXXX 是树莓派的CPU串码 )

内容:

The CPU serial no :0000000045945b16The external IP address:14.145.159.77You may locate this IP address in http://whatismyipaddress.com ==========================================Detailed IP infoeth0      Link encap:Ethernet  HWaddr b8:27:eb:94:5b:16            UP BROADCAST MULTICAST  MTU:1500  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:0 errors:0 dropped:0 overruns:0 frame:0          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)wlan0     Link encap:Ethernet  HWaddr 00:0b:81:82:1a:6b            inet addr:192.168.1.103  Bcast:255.255.255.255  Mask:255.255.255.0          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:57523 errors:0 dropped:57592 overruns:0 frame:0          TX packets:62130 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:5448608 (5.1 MiB)  TX bytes:37278110 (35.5 MiB)==========================================Detailed CPU infoProcessor	: ARMv6-compatible processor rev 7 (v6l)BogoMIPS	: 697.95Features	: swp half thumb fastmult vfp edsp java tls CPU implementer	: 0x41CPU architecture: 7CPU variant	: 0x0CPU part	: 0xb76CPU revision	: 7Hardware	: BCM2708Revision	: 000fSerial		: 0000000045945b16

够清楚吧,汇报了CPU串码,外网IP,IP详情

接下来,可以上 http://whatismyipaddress.com ,输入外网IP地址,定位在哪里


整个过程是自动的,启动过程中不注意观察启动信息,是看不出来的。


再改进

如何让我的树莓派一启动,我的手机就收到一条短信呢?

首先,要开通手机邮箱(我用的是189手机,手机邮箱很好用的),启用邮件短信通知功能。

在接收信息的邮箱中,设置邮件自动转发,将邮件转发到手机邮箱中。

则,树莓派一启动,向接收信息的邮箱发邮件,再自动转发到手机邮箱,手机邮箱下发短信通知,搞定! (189真好)


安全性

1,由于脚本中写有邮箱用户名和密码,请一定要注意,为每个树莓派独立申请一个新的邮箱,且专用。

2, 如果树莓派被换了SD卡,则脚本将不复存在,功能也就失效了


引申开来

其实,这个idea可以用于任何设备!包括你的笔记本电脑。




  相关解决方案