域名地址到期监控
域名地址到期监控
域名无法直接获取,需要使用工具whois 调用查询域名信息
通过linux的whois查询域名情况→截取相关参数→转换为sql→插入数据库→grafana数据可视化
一、安装whois
yum install -y whois
二、脚本转换
截取相关参数→转换为sql→插入数据库,配合crontab每天对数据库进行update
whois查询的域名,格式上有区别
说明:ym.txt里存你要监控的域名,循环去whois查询
提前建立了一个数据库和表,库叫yuming,表叫ym
第一种:
for line in `cat /home/dpan/soft/yuming/ym.txt`
do
#拿到过期的日期,假设是非.cn 域名
e_d=`whois $line |grep 'Expiry Date' |awk '{print $4}' |cut -d 'T' -f 1`
# 为空
#(1)针对.cn 域名(无T,关键词:Expiration Time)
if [ -z "$e_d" ]; then
expiry_time=`whois $line |grep 'Expiration Time' |awk '{print $3" "$4}'`
while [ -z "$expiry_time" ]; do
sleep 3
expiry_time=`whois $line |grep 'Expiration Time' |awk '{print $3" "$4}'`
done
#(2) 针对非 .cn 域名(有T,关键字:Expiry Date)
## 如果不为空,对时分秒做转换(默认是UTC,少了8小时, 进行date -d 转换)
else
hms=`whois $line |grep 'Expiry Date1' |awk '{print $4}' |cut -d 'T' -f 2`
e_d_hms=`date -d "$hms" | awk '{print $4}'`
expiry_time="$e_d $e_d_hms"
fi
#计算过期时间戳
e_d_s=`date -d "$expiry_time" +%s`
echo "域名 $line 的过期时间戳为: ${e_d_s}"
expiry_date_s=`date -d @${e_d_s}`
#3、计算今天的时间戳
today_s=`date +%s`
#4、计算过期时间戳和今天时间戳的差值,得到剩余天数
expiry_date=$(($(($e_d_s-$today_s))/(60*60*24)))
echo "剩余天数: $expiry_date "
expiry_day=`echo $expiry_time | awk '{print $1}'`
echo "域名: ${line} 到期日期: ${expiry_time}, 剩余: $expiry_date 天 !!!!"
# if [ $expiry_date -lt 90 ];
# then
# DATE=`date +%F_%T`
# echo "${line} 域名将在 $expiry_time 到期,请及时处理!!" | mail -s "${line} 域名 $expiry_time 到期通知" jty@simplesoft.com.cn
#
# echo "域名:${line} 将在$expiry_time 到期,剩余天数: $expiry_date 天,请及时处理!!!" | mail -s "${line} 域名 $expiry_time 到期通知" jty@simplesoft.com.cn
#
# fi
cat >> /home/dpan/soft/yuming/ym.sql <<EOF
update ym set \\`ym_end_time\\` = '${expiry_time}', \\`ym_end_day\\` = $expiry_date WHERE ym_url = '${line}';
EOF
done
mysql -usimple -psimple -D yuming < /home/dpan/soft/yuming/ym.sql
rm -rf /home/dpan/soft/yuming/ym.sql
第二种:
for line in `cat /home/dpan/soft/yuming/ym.txt1`
do
#拿到过期的日期,假设是非.cn 域名
e_d=`whois $line |grep 'Expiry Date' |awk '{print $5}' |cut -d 'T' -f 1`
# 为空
#(1)针对.cn 域名(无T,关键词:Expiration Time)
if [ -z "$e_d" ]; then
expiry_time=`whois $line |grep 'Registry Expiry Date' |awk '{print $4" "$5}'`
while [ -z "$expiry_time" ]; do
sleep 3
expiry_time=`whois $line |grep 'Registry Expiry Date' |awk '{print $4" "$5}'`
done
#(2) 针对非 .cn 域名(有T,关键字:Expiry Date)
## 如果不为空,对时分秒做转换(默认是UTC,少了8小时, 进行date -d 转换)
else
hms=`whois $line |grep 'Expiry Date' |awk '{print $4}' |cut -d 'T' -f 2`
e_d_hms=`date -d "$hms" | awk '{print $4}'`
expiry_time="$e_d $e_d_hms"
fi
#计算过期时间戳
e_d_s=`date -d "$expiry_time" +%s`
echo "域名 $line 的过期时间戳为: ${e_d_s}"
expiry_date_s=`date -d @${e_d_s}`
#3、计算今天的时间戳
today_s=`date +%s`
#4、计算过期时间戳和今天时间戳的差值,得到剩余天数
expiry_date=$(($(($e_d_s-$today_s))/(60*60*24)))
echo "剩余天数: $expiry_date "
#curl 报警中,钉钉不认 $expiry_time : 时分秒这种日期,改用python发
expiry_day=`echo $expiry_time | awk '{print $1}'`
echo "域名: ${line} 到期日期: ${expiry_time}, 剩余: $expiry_date 天 !!!!"
# if [ $expiry_date -lt 90 ];
# then
# DATE=`date +%F_%T`
# echo "${line} 域名将在 $expiry_time 到期,请及时处理!!" | mail -s "${line} 域名 $expiry_time 到期通知" jty@simplesoft.com.cn
#
# echo "域名:${line} 将在$expiry_time 到期,剩余天数: $expiry_date 天,请及时处理!!!" | mail -s "${line} 域名 $expiry_time 到期通知" jty@simplesoft.com.cn
#
# fi
cat >> /home/dpan/soft/yuming/ym1.sql <<EOF
update ym set \\`ym_end_time\\` = '${expiry_time}', \\`ym_end_day\\` = $expiry_date WHERE ym_url = '${line}';
EOF
done
mysql -usimple -psimple -D yuming < /home/dpan/soft/yuming/ym1.sql
rm -rf /home/dpan/soft/yuming/ym1.sql
配合crontab定时任务,每天查询完表update数据库
三、grafana
数据源设置为mysql,自定义table,最终效果如下
最后也可以配置grafana的报警推送邮箱或者企业微信等也是可以的
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果