zoukankan      html  css  js  c++  java
  • 让树莓派自动上报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" xxx@gmail.com

    脚本很简单,分为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 xxx@126.com
    4 auth plain
    5 user xxx@126.com
    6 password your_password
    7 logfile /var/log/msmtp.log

    其中,smtp.126.com是我使用的邮箱的SMTP服务器地址,xxx@126.com是我用于发送邮件的邮箱,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

  • 相关阅读:
    linux安装mysql5.7.24
    如何解决svn Authorization failed错误
    vux配置i18n
    vue项目使用vux框架配置教程
    EL函数
    Android的taskAffinity对四种launchMode的影响
    Activity生命周期-Android
    为什么用服务不用线程-Android
    Hibernate总结--MyEclipse的小bug
    EL表达式隐含对象
  • 原文地址:https://www.cnblogs.com/phpdragon/p/4769738.html
Copyright © 2011-2022 走看看