Shell监控公网IP-变化邮件报警

公司用的动态公网IP,但是有时IP会改变,导致部分业务有问题,我们又不能及时发现,会造成一定的影响。

现在使用shell监控公网的IP,如发生变化,立即邮件报警。

CentOS邮件报警可以参考这个,默认是mailx

安装邮件服务

yum -y install mailx

配置 mailx 文件

进入qq邮箱首页,点击设置>账户,然后找到下图截取的地方(需要设置的,如图)

le55kcrn.png

设置完之后呢,就要把生成的授权码作为邮箱的password

配置/etc/mail.rc文件【下面的配置qq是假的,别用】

#设置发件人名称
set from=1832025651@qq.com
#设置邮件服务器
set smtp=smtp.qq.com
#填写自己邮箱地址
set smtp-auth-user=1832025651@qq.com
#输入邮箱验证码
set smtp-auth-password=pfljngafoqaxecff
#smtp的认证方式,默认是login
set smtp-auth=login
测试发送邮件
echo "admin ,文件内容" | mail -s "标题" 你的qq@qq.com

编写Shell脚本

#!/bin/bash
dirfile='/home/ip_change'
new_ip=`curl icanhazip.com`    #获取新公网ip
mail_user=1794@qq.com    #接收收邮件邮箱
mail_subject="IP已经发生变化,及时处理"    #邮件主题
log="/var/log/tool.log"
datetime=`date '+%Y-%m-%d %H:%M:%S'`
#判断文件是否存在
if [ ! -f "$dirfile" ]; then
  touch "$file"
  echo "1.1.1.1" > $dirfile
fi
#判断new_ip是否获取
 
if [ ! -n "$new_ip" ]; then
    echo "$datetime 公网IP获取失败,检查'curl icanhazip.com' " >> $log
    exit 1
fi
old_ip=`cat $dirfile`     #查看旧ip
 
# 判断两个IP是否相等 发邮件
if [ "$new_ip" = "$old_ip" ]; then
  echo "$datetime IP正常 - true " >> $log
else
  echo  $new_ip > $dirfile
  echo "IP已经发生变化, 新IP: $new_ip   旧IP: $old_ip  !!! " | mail -s "$mail_subject" "$mail_user"
  echo "$datetime IP已经发生变化 - error 新IP :$new_ip   旧IP: $old_ip" >> $log
fi

然后设置定时任务执行,如下:

crontab -e
*/10 * * * * /data/shell/getIp/getIp.sh

至此,每隔10分钟,自动获取最新公网ip,如果有更新,发送到目标邮箱。

le55ipwq.png

最后修改:2024 年 01 月 02 日
如果觉得我的文章对你有用,请随意赞赏o(* ̄▽ ̄*)ブ