由于电脑设置静态IP经常出现链接不上网络,动态IP又非常不方便,故有了这个想法并实现
原理:
Linux,包含PC机器,树莓派等,通过shell 自动获取报告本机IP | 通过 Mutt+Msmtp邮箱发送
此次使用树莓派3B实现步骤:
1.安装mutt 和 Msmtp
$ sudo apt -get install mutt //安装mutt,其他系统使用相应包管理 $ sudo apt-get install msmtp //安装msmtp,其他系统使用相应包管理
2.在/etc/Muttrc 下配置 mutt
## send ip to my mail set sendmail="/usr/bin/msmtp" set use_from=yes set realname=" Pi's address4 " set from = A 邮箱地址 set envelope_from=yes set crypt_use_gpgme = no
3.在/root/下 新建配置msmtp
account default host smtp.aliyun.com from your A mail @aliyun.com auth plain user your A mail @aliyun.com //A邮箱地址 password 密码 logfile ~/.msmtp.log // 存储日志
4.编写shell 获取 ip 并发送
# check network availability while true do TIMEOUT= SITE_TO_CHECK="www.163.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 ETH0_IP_ADDR=` ifconfig wlan0 | sed -n "2,2p" | awk '{print substr($2,1)}' ` ECHO_IP=`ifconfig ` # send the Email echo " test ifconfig wlan0:$ECHO_IP " | mutt -s "Current time:`date '+%F %T'` Raspiberry: $ETH0_IP_ADDR " B 邮箱地址
此时通过运行脚本便可发送 ip 到 B邮箱
5.添加开机自启动脚本就可实现 -->> 开机启动的多种方式设置
这次使用 更改/etc/rc.load 方式自启动,在exit0 上面添加内容
#!/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. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi #在exit0 上面添加内容 su pi -c "source /etc_sh/send_ip_mail.sh" //shell文件地址 exit