0%

玩转树莓派-自动上报IP

玩转树莓派 | 自动上报IP

安装和配置mutt 和 msmtp

muttmsmtp 是两个常用的邮件客户端和 SMTP(简单邮件传输协议)工具。它们通常被一起使用来发送和接收电子邮件。

  1. mutt:
    • mutt 是一个文本模式的邮件客户端,它提供了一个基于终端的用户界面,可以在 Linux 上以命令行方式使用。
    • mutt 支持多种邮件协议,包括 POP3 和 IMAP,因此可以使用它来连接到不同的邮件服务器来接收和阅读邮件。
    • mutt 具有丰富的配置选项和自定义功能,可以通过编辑配置文件进行优化和修改。可以设置邮箱、签名、邮件过滤规则等。
  2. msmtp:
    • msmtp 是一个用于发送邮件的 SMTP 客户端工具,它允许通过外部的 SMTP 服务器发送电子邮件。
    • msmtp 配合 mutt 使用时特别方便,因为 mutt 默认不包含 SMTP 邮件发送功能,而 msmtp 可以作为其外部的 SMTP 发送器。
    • msmtp 配置简单,只需编辑一个配置文件,并在其中指定 SMTP 服务器的详细信息,如服务器地址、端口、用户名和密码等。

执行如下命令安装 mutt 和 msmtp:

1
sudo apt install -y mutt msmtp

安装后,先配置 msmtp,在 /etc目录下创建文件 msmtprc(该配置为所有用户生效,如果仅对当前用户生效,仅需创建 ~/.msmtprc文件,不推荐后一种)。msmtprc配置文件内容为:

1
2
3
4
5
6
7
account default
host smtp.qq.com
from xxx@foxmail.com
auth plain
user xxx@foxmail.com
password your_password
logfile /var/log/msmtp.log

其中,smtp.qq.com是我使用的邮箱的SMTP服务器地址,xxx@foxmail.com是我用于发送邮件的邮箱,your_password是邮箱密码,你要根据你的情况修改。由于 msmtprc 中包含密码,因此需要设置只读:

1
sudo chmod 600 /etc/msmtprc

然后配置 mutt。在/etc目录下创建文件muttrc(或者在当前用户的目录下创建文件 .muttrc,仅对当前用户生效),内容如下:

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

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

获取 IP 和 SSID

树莓派开机自动上报的内容包括 IP 和连接的 WIFI 名称,其一般步骤为:

  1. 开机时执行一个脚本,检测网络可用性
  2. 网络通畅后获取自己的IP地址和网络名称
  3. 发送邮件到指定的邮箱。

根据上述思路,send-ip-mail.sh脚本内容如下:

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

# check network availability
while true
do
TIMEOUT=5
SITE_TO_CHECK="www.baidu.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 wlan1, e.g. "192.168.16.5"
ETH0_IP_ADDR=`ifconfig wlan1 | sed -n "2,2p" | awk '{print substr($2,1)}'`
ESSID=`sudo iwconfig wlan1 | grep ESSID | awk '{print substr($4,1)}'`
# send the Email
echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "${ESSID} IP: $ETH0_IP_ADDR" xxx@foxmail.com

其中,wlan1为树莓派无线网卡,xxx@foxmail.com为要发送的目的地址。

开机自动上报 IP

为了实现开机自动 IP,需要将上述 send-ip-mail.sh 脚本放在 /etc/rc.local 中,只需一行即可。

1
2
3
4
#/etc/rc.local
su pi -c "sudo /home/pi/send-ip-mail.sh >> /root/data/source/send-ip-mail.log 2>&1"
...
exit 0

其中,su 命令是指定在 pi 用户下执行这条命令,-c 表示执行完这条命令之后恢复原来的用户。

参考链接

让树莓派自动上报IP地址到邮箱