美文网首页
Openwrt发邮件通知Wan口Ip变化

Openwrt发邮件通知Wan口Ip变化

作者: 木子识时务 | 来源:发表于2017-08-15 21:12 被阅读0次

知道Wan口Ip可以远程访问路由器,这个可以通过DDNS来实现,但是DDNS对于内网Ip却不能很好的解析(也不知道是不是我不会设置)。可能有人会说内网IP没有什么作用,但是知道内网Ip也是可以做些事情的。比如我们学校里面分配的内网Ip是100.64.x.x开头的,如果在一个内网段内知道IP后是可以相互访问的;就算是在外网,也可以通过挂学校VPN的方式进行访问。

参考教程


1. 安装ssmtp

ssh登录到路由器的shell中,输入下面的命令:

opkg update
opkg install ssmtp

2. 设置ssmtp

主要设置用来发送邮件的邮箱,此时需要所设置的邮箱支持smtp服务,163邮箱的设置可以参考这个网页:163邮箱如何开启POP3/SMTP/IMAP服务?. 现在163邮箱在开启smtp服务的时候,会自动生成一个邮箱客户端授权码,这个可以在相关的smtp程序中当做邮箱密码来使用,感觉大大的提高了安全性。

编辑ssmtp配置文件,在shell中输入:

vim /etc/ssmtp/ssmtp.conf

然后清空所有的文件内容,按照下面的格式,输入相应的内容。注意要将相关内容替换为自己的邮箱

root=xxx@163.com #替换成自己的邮箱帐户
mailhub=smtp.163.com    #邮箱的smtp服务器
rewriteDomain=163.com   
hostname=163.com
FromLineOverride=YES
#UseTLS=YES
AuthUser=xxx@163.com    #替换为自己的邮箱帐户
AuthPass=xxx    #邮箱密码或者邮箱客户端授权码

3. 编写自动发送邮件的bash shell

  • 新建一个bash shell, 在shell中输入:
touch /sbin/ip_mail
vim /sbin/ip_mail
  • 根据个人信息,修改下面的内容之后,复制到之前建立的 /sbin/ip_mail中
#!/bin/sh
 
#脚本启动后发邮箱通知Wan口Ip
sleep 60s    #等待路由器启动完毕
{
echo "From:<XXX@163.com>";  #发件箱,需要与ssmtp设置中的邮箱保持一致
echo "To:<YYY@qq.com>";  # 收件箱
echo "Date: `date '+%a, %d %b %Y %H:%M:%S %z'`";
echo "Subject: Rounter rebooted";   # 邮件主题     
echo "";
# 获取当前的Ip地址
#pppoe-wan需要改为自己的端口
echo "The new IP is $(ip -4 addr show dev pppoe-wan | awk '/inet / {print $2}' | cut -d/ -f1).";    
} |ssmtp YYY@qq.com #与之前的收件箱保持一致
 
#检测Wan口Ip是否改变,如果改变,则发邮件通知                          
last=$(ip -4 addr show dev pppoe-wan | awk '/inet / {print $2}' | cut -d/ -f1);                                                                            
while sleep 300s    #检测时间间隔
do             
        #pppoe-wan需要改为自己的端口    
        curr=$(ip -4 addr show dev pppoe-wan | awk '/inet / {print $2}' | cut -d/ -f1);
        if [ "A$curr" != "A$last" ]; then                                              
{                                        
echo "From:<XXX@163.com>";  #跟前面的保持一致即可
echo "To:<YYY@qq.com>";    #跟前面的保持一致即可
echo "Date: `date '+%a, %d %b %Y %H:%M:%S %z'`";
echo "Subject: Rounter IP changed";       
echo "";                            
#pppoe-wan需要改为自己的端口          
echo "The new IP is $(ip -4 addr show dev pppoe-wan | awk '/inet / {print $2}' | cut -d/ -f1).";
} |ssmtp YYY@qq.com    #跟前面的保持一致即可                                                                   
last=$curr                
  fi                      
done

端口可以用ifconfig命令进行查看,有自己需要的ipv4地址的端口名称就是需要填在此处的端口
例如,这台路由器我需要发送100.64开头的ipv4地址,然后在端口eth0.2中,就需要将pppoe-wan替换为eht0.2。

image.png

复制到shell中时,汉字有时候会导致莫名其妙的bug,可以先将注释全部删掉,然后再复制进去

  • 给脚本运行的权限
chmod 755 /sbin/ip_mail
  • 将脚本设为开机启动

编辑文件 /etc/rc.local

vim /etc/rc.local

在 exit 0 语句之前添加 /sbin/ip_mail,如下:

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

/sbin/ip_mail

exit 0

至此,重启路由器,即可大功告成。。

这种开机自启动脚本的设置有点Low,好像有更高级的方法,不过还没尝试,具体可参考:OpenWrt启动过程分析+添加自启动脚本

相关文章

网友评论

      本文标题:Openwrt发邮件通知Wan口Ip变化

      本文链接:https://www.haomeiwen.com/subject/xcavrxtx.html