树莓派开机发送IP到邮箱
好吧又是个不务正业系列
废话
一般用树莓派的时候都是ssh上去管理的,不插显示器什么的。这样就需要知道树莓派连接网络后的IP地址。
于是从网上找了个脚本可以实现在开机的时候把IP地址发到邮箱里。
需要用到mutt
和msmtp
这两个东西。大家可以自行安装。
配置msmtp和mutt
在用户的根目录下创建文件.msmtprc
,内容如下:
account default
host smtp.foxmail.com
from xxx@lightless.com
auth login
user xxx@lightless.com
password your_password
logfile /var/log/msmtp.log
具体的内容请根据自己的邮箱去更改。
在用户的根目录下创建文件.muttrc
,内容如下:
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="lightless"
set editor="vim"
其中realname
是发件人的名字,会在接收到的邮件中显示出来。
发邮件脚本
整个脚本基本上是抄过来的,很简单。不过我对原来的脚本进行了一些更改,主要有设定了HOME
变量(不然在执行计划任务/etc/crontab
的时候有可能被覆盖掉,比如你的HOME
应该是/root/
,在crontab
中有可能会出现HOME=/
类似的代码将其覆盖,会导致邮件无法发送。),增加发送wlan
的IP
(毕竟有时候是用WiFi接入的)。
#!/bin/bash
HOME='/root/'
# 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 eth0, e.g. "192.168.16.5"
ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'`
WLAN0_IP_ADDR=`ifconfig wlan0 | sed -n "2,2p" | awk '{print substr($2,1)}'`
BSSID=`iwconfig wlan0 | sed -n "1, 1p" | awk '{print $4}'`
# send the Email
echo "Current time: `date '+%F %T'`. Enjoy it! \nETH0 IP Address: $ETH0_IP_ADDR \nWLAN0_IP_ADDR: $WLAN0_IP_ADDR \nBSSID: $BSSID" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR and $WLAN0_IP_ADDR" xxx@gmail.com
开机启动
这个简单,只要编辑rc.local
文件就可以了,添加下面这句话。
/path/to/send-ip-mail.sh >> /path/to/send-ip-mail.log 2>&1
log文件一定要先存在才可以,不然会出现No such file or directory
的错误。
博主好厉害!
6666666666