参考《树莓派开机后自动发送邮件上报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 username@aliyun.com
auth plain
user username@aliyun.com
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" username@aliyun.com
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" username@aliyun.com
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