树老大 发表于 2013-5-19 10:29:51

树莓派学习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 = 'pi000001@126.com'      #发件人邮箱
toaddr= 'pi000001@126.com'         #接收人邮箱

#mail login details
username = 'pi000001'      #SMTP登录用户名
password = 'p123456'       #SMTP登录密码
smtp_server = 'smtp.126.com'   #SMTP服务器
   我新申请了一个126邮箱,专用于我的树莓派。用户名是pi0000001@126.com,密码是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:EthernetHWaddr b8:27:eb:94:5b:16            UP BROADCAST MULTICASTMTU:1500Metric: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.1Mask:255.0.0.0          UP LOOPBACK RUNNINGMTU:16436Metric: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:EthernetHWaddr 00:0b:81:82:1a:6b            inet addr:192.168.1.103Bcast:255.255.255.255Mask:255.255.255.0          UP BROADCAST RUNNING MULTICASTMTU:1500Metric: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可以用于任何设备!包括你的笔记本电脑。

xq_0407 发表于 2013-5-19 23:50:10

向树老大无私奉献的精神致以最崇高的敬意。

lwlsw 发表于 2013-5-20 15:44:58

想法不错,支持一下,不过实用性不大,呵呵
页: [1]
查看完整版本: 树莓派学习17:我的树莓派在哪? --找回丢失的树莓派