让树莓派自动上报IP地址到邮箱,二代B

由于我使用树莓派的场景大多数是在没有显示器、只用terminal连接它的情况下,所以,它的IP地址有时会在重启之后变掉(DHCP的),导致我无法通过terminal连接上它。然后我又要很麻烦地登录路由器的管理界面里,去看它被分配到的新IP是什么,然后用terminal重连,太麻烦了,不是么?作为一个树莓派玩家,这种麻烦简直是无法接受的!

为了解决这个问题,我让Pi开机的时候,自动向我指定的Email发送一封邮件,告诉我它此次开机时的IP地址。
步骤: 开机时执行一个脚本,检测网络可用性→网络通畅后获取自己的IP地址→发送邮件到指定的邮箱。
下面一一道来。

『1』 开机启动项
开机执行一个脚本是怎么做到的?
只需要向 /etc/rc.local 文件中添加一句话,即可开机执行一个脚本了:

1 # send a mail to notify the IP address of Pi
2 /root/data/source/send-ip-mail.sh >> /root/data/source/send-ip-mail.log 2>&1

『2』 上报IP地址的脚本实现
send-ip-mail.sh脚本的内容如下:

#!/bin/bash

#fix can‘t lock /sent
HOME=‘/root/‘

# check network availability
while true
do
  TIMEOUT=5
  SITE_TO_CHECK="www.126.com"
  RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1`
  if [ "x$RET_CODE" = "x200" ]; then
  echo "Network OK, will send mail..."
  break
  else
  echo "Network not ready, wait..."
  sleep 1s
  fi
done

# get the IP address of eth0, e.g. "192.168.16.5"
ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk ‘{print substr($2,1)}‘`

# send the Email
echo "Current time: `date ‘+%F %T‘`. Enjoy it. IP Address of Raspberry Pi: $ETH0_IP_ADDR" | mutt -s "email—title" [email protected]

脚本很简单,分为3部分:第一部分检测网络可用性;第二部分取树莓派的eth0网卡的IP地址;第三部分发送邮件到指定的Email。
其中,第一部分是必须要有的,因为经过我试验,在本脚本执行时,树莓派的网络还没有初始化好,此时你直接发邮件是发不出去的。在这里我通过访问www.126.com来确定网络可用性。
第三部分需要你预先配置好mutt和msmtp。

『3』 安装配置mutt和msmtp
配置好mutt和msmtp后,就可以像上面一样,通过一句代码将邮件发送出去。
首先要在Pi上安装mutt和msmtp:

sudo apt-get install msmtp mutt

安装后,先配置msmtp。在/etc/msmtprc,内容如下:

1 account default
2 host smtp.126.com
3 from [email protected]126.com
4 auth plain
5 user [email protected]126.com
6 password your_password
7 logfile /var/log/msmtp.log

其中,smtp.126.com是我使用的邮箱的SMTP服务器地址,[email protected]是我用于发送邮件的邮箱,your_password是邮箱密码,你要根据你的情况修改。

然后配置mutt。在/etc/Muttrc,内容如下:

1 set sendmail="/usr/bin/msmtp"
2 set use_from=yes
3 set realname="Alarm"
4 set editor="vim"

其中,realname是发件人的名字,接收到的邮件中会显示出来。

『4』 至此全部搞定,以后每次Pi开机的时候,就会“自报家门”,我们再也不愁找不到Pi啦!

本文来自:树莓派实验室
链接地址:http://shumeipai.nxez.com/2014/03/18/let-raspberry-pi-ip-address-is-automatically-reported-to-the-mailbox.html

PS:http://www.cnblogs.com/xwdreamer/p/3568901.html

时间: 2024-12-26 00:53:02

让树莓派自动上报IP地址到邮箱,二代B的相关文章

树莓派自动报告ip地址

树莓派启动后,通过使用SSH进行连接,这么一来遇到第一个问题就是不知道树莓派的ip是多少. 通过让其开机自动运行脚本,通过udp.tcp.web接口和yeelink接口,实现向外告知ip地址的功能. 项目地址:http://git.oschina.net/lixin/RPIWhere

ARM-Linux配置DHCP自动获取IP地址

备注:内核版本:2.6.30.9busybox版本:1.15.2 PC Linux和开发板Linux的工作用户:root 1. 配置内核:[*] Networking support --->Networking options ---><*> Packet socket<*> Unix domain sockets[*] TCP/IP networking[*] IP: kernel level autoconfiguration[*] IP: DHCP suppor

自动设置IP地址和自动获取IP地址bat批处理文件

自动设置IP地址.bat Echo offecho  手动设置IP地址....Netsh interface IP Set Addr "本地连接" Static 192.168.1.8 255.255.255.0 192.168.1.1 1echo  手动设置DNS地址....Netsh interface IP Set dns "本地连接" static 202.106.196.115 primaryecho  手动设置备份DNS地址....Netsh inter

CentOS 7如何设置Linux开机自动获取IP地址

centos7 minimal版默认安装好后没有获取ip地址,需要手动配置.方法如下: 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33). 2.输入“cd /etc/sysconfig/network-scripts/”按回车键确定,继续输入“ls”按回车键查看文件. 3.输入“vi ifcfg-ens33”并按回车键确定(网卡名称可能不同).亦可在第二步直接输入“cd /etc/sysconfig/

设置为自动获得IP地址,如何查看当前的IP地址

电脑设置为自动获得IP地址,如何查看当前的IP地址呢?首先点击[开始]在搜索框中输入"cmd",即可打开命令提示符,如下图所示: 输入"ipconfig /all"命令回车,如下图所示: 显示的一些网络的信息,其中有一项是IPv4地址,这个就是本机的IP地址. 远程连接某台服务器时,可以在搜索栏中输入"mstsc",即可打开远程连接,如下图所示:

自动获取IP地址的命令是什么?您知道在什么情况下,您的Linux才可以自动获取IP地址?

1. 自动获取IP地址的命令是什么?您知道在什么情况下,您的Linux才可以自动获取IP地址? 答:(1) Linux中使用 dhclient 命令可以从DHCP服务器上获得一个可用的IP地址 (2)首先,需要激活网卡eth0:其次,如果linux是虚拟机,那么还需要设置虚拟机的网络是桥接 模式或者NAT模式,桥接模式必须在网络管理员允许分配IP的情况下自动获得IP地址才能成功: NAT模式一般都能成功:最后,可以配置eth0的配置文件/etc/sysconfig/network-scripts

如何设置CentOS 7开机自动获取IP地址详解

本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址和设置固定IP地址. 自动获取动态IP地址 1.输入"ip addr"并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33,下图黄色框内). 2.输入"cd /etc/sysconfig/network-scripts/"按回车键确定,继续输入"ls"按回车键查看文件. 3.输入"vi ifcfg-ens

详解如何设置CentOS 7开机自动获取IP地址

本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址和设置固定IP地址. 自动获取动态IP地址 1.输入"ip addr"并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33,下图黄色框内). 2.输入"cd /etc/sysconfig/network-scripts/"按回车键确定,继续输入"ls"按回车键查看文件. 3.输入"vi ifcfg-ens

电脑设置自动获取IP地址教程

当自己无线网络连接不上.或者电脑接了网线无法上网或者电脑只能登入qq无法打开网页等问题,那么就有可能是自己的电脑没有设置成自动获取IP地址,那么该怎么操作呢?下面我将根据自己的一些经验,与大家分享,如何设置自动获取IP地址! 1.打开[计算机]点击[打开控制面板] 2.选择网络和intemet 3.点击[网络和共享中心] 4.点击[更改适配器设置] 5.右键单击[本地连接]选择属性 备注:选择需要更改的网络适配器 6.选择[Internet协议版本4(TCP/IPv4)]选择属性 7.选择[自动