树莓派实现开机后发邮件上报IP

参考《树莓派开机后自动发送邮件上报IP地址》实现树莓派开机后自动发邮件的功能,简要记录实现过程中碰到的坑。

1. 开启ssh

新下载的镜像是默认关闭SSH的。自己由于没有显示器,无法在设置中进行调整。最后是参考网上的方法在/boot根目录下新建文件 名为ssh的空文件来开启ssh。

2. 安装msmtp和mutt

一开始自己尝试更新源,用国内源,可是一直出错,于是放弃。
因为没有显示器,自己是将树莓派2B用网线联路由器,然后电脑联路由器wifi来实现ssh登录树莓派。进而完成用户密码的更改,存储的扩展,wifi等基础设置的。下载软件时是树莓派和电脑连手机热点。

3. 配置msmtp和mutt

一开始按作者写的尝试在用户下进行配置,后来果然碰到了作者写的用户的坑。于是改用全局配置。同时在rc.local中命令写成

sh /send-ip-email.sh

在send-ip-email.sh中写

sudo mutt ...

最终的文件有五个。
msmtp的配置文件,路径sudo nano /etc/msmtprc(不用sudo打开的是空白文件)

account default
host smtp.aliyun.com
from [email protected]
auth plain
user [email protected]
password ********
logfile /var/log/msmtp.log

mutt自己的配置文件(没有修改),路径sudo nano /etc/Muttrc,没有进行修改。
mutt新建的配置文件,路径sudo nano /etc/muttrc

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="RaspberryPi"
set editor="nano"

rc.local文件,路径sudo nano /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sudo sh /send-ip-mail.sh

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

send-ip-email.sh文件,路径sudo nano /send-ip-mail.sh

#!/bin/bash
# check network availability
while true
do
RET_CODE=`curl -I -s "http://www.baidu.com" -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 30s
fi
done
# get the IP address of wlan0
ETH0_IP_ADDR=`hostname -I`
# send the Email
TEXT_0=`cat /sys/class/thermal/thermal_zone0/temp`
TEXT_1=`iwconfig wlan0`
echo "Current time: `date '+%F %T'`. \nCPU temp: $TEXT_0\n$TEXT_1\n" | sudo mutt -s "Raspberry Pi: $ETH0_IP_ADDR" [email protected]

while true
do
Temp=`cat /sys/class/thermal/thermal_zone0/temp`
if test $Temp -gt 45000 ;then
echo "Current time: `date '+%F %T'`. Temperature is higher than 40" | sudo mutt -s "Raspberry Pi Begin to shutDown" [email protected]
sudo shutdown now
fi
sleep 1s
done

4. 关于bash脚本

主要卡在判断数值大小上,试了好几次才知道通过test加-gt来判断两个数的大小。

5. 配置权限

查看脚本权限使用命令

ls -l send-ip-mail.sh

确认得到的结果有三个x

-rwxr-xr-x 1 root root 828 May  4 17:18 send-ip-mail.sh

设置可执行权限使用命令

chmod +x send-ip-mail.sh

你可能感兴趣的:(树莓派实现开机后发邮件上报IP)