如果树莓派丢了, 如何定位它在哪?如何找到它呢?
这位外国网友真有创意,写了一个脚本,能自动向主人汇报自己的树莓派在哪
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: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 encapocal 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可以用于任何设备!包括你的笔记本电脑。
|