域名有效期监控的最佳方案
2023-03-14 22:48:00 时间
今天分享一个使用shell脚本实现域名有效期的监控
不喜欢开场白,还是直接上干货...
#!/bin/bash
#检测域名是否过期
#作者:xuexiaobai@shell.com
#日期:20200224
#版本:v0.1
#当前日期时间戳,用于和域名的到期时间做比较
currentTimestamp=`date +%s`
#检测whois命令是否存在,不存在则安装whois包
isInstallWhois()
{
which whois >/dev/null 2>/dev/null
if [ $? -ne 0 ]
then
yum install -y whois || apt-get install whois -y
fi
}
notify()
{
expiredate=`whois $1 |grep 'Registry Expiry Date' |awk '{print $4}' |cut -d 'T' -f 1`
#上面的$1代表域名,遍历循环出来的。
#如果e_d的值为空,则过滤关键词'Expiration Time'
if [ -z "$expiredate" ]
then
expiredate=`whois $1|grep 'Expiration Time' |awk '{print $3}'`
fi
#将域名过期的日期转化为时间戳
expiredatestamp=`date -d $expiredate +%s`
#计算半个月一共有多少秒
# 15d 1296000 30d 2592000 35d 3024000 40d 3456000
n=2592000
timeBeforce=$[$expiredatestamp - $n] #过期时间15d以前的时间戳
timeAfter=$[$expiredatestamp + $n] #过期时间15d以后的时间戳
if [ $currentTimestamp -ge $timeBeforce ] && [ $currentTimestamp -lt $expiredatestamp ]
then
curl -X POST
-H 'Content-type: application/json'
--data '{"text":":warning:Domain '$1' will to be expired less then 15d. And domain '$1' expire date is '$expiredate' @xuexiaobai"}'
https://hooks.slack.com/services/*****/xxxxxxx/qqqqqqqqqqqqqqqqqqqqqq
fi
if [ $currentTimestamp -ge $expiredatestamp ]
then
curl -X POST
-H 'Content-type: application/json'
--data '{
"text":":interrobang:Domain '$1' has been expired. And domain '$1' expire date is '$expiredate' @xuexiaobai"}'
https://hooks.slack.com/services/*****/xxxxxxx/qqqqqqqqqqqqqqqqqqqqqq
fi
}
#检测上次运行的whois查询进程是否存在
#若存在,需要杀死进程,以免影响本次脚本执行
if pgrep whois &>/dev/null
then
killall -9 whois
fi
isInstallWhois
for d in baidu.com google.com
do
notify $d
done
以上脚本需要注意几个地方:
- 脚本中使用的是slack通知方式,如果你选择使用slack,需要修改一下hooks地址
- 可以自定义控制检查的有效期时长,控制是还有多少天过期进行通知,修改shell脚本中的那个
n
变量 - 放在一个定时任务中运行就可以了.
相关文章
- 性能优化:关于缓存的一些思考
- 一个著名的日志系统是怎么设计出来的?
- PHP代码简洁之道——SOLID原则
- 小小的单例模式竟然有这么多种写法?
- 机器学习算法一览
- 令人抓狂的代码 - 万能正则表达式.*陷阱
- gRPC入门指南之简单RPC
- 用定租问题学透K近邻算法
- 我是如何把性能优化的颗粒度做的更细
- 鸿蒙轻内核M核源码分析系列十四 软件定时器Swtmr
- 探讨Esbuild 为什么那么快
- 设计模式系列之策略模式
- PHP 源码探秘 - 为什么 trim 会导致乱码
- 态牛-Tech Neo 9月刊:基于算法的IT运维
- Shell逐行处理文本求和,我人傻了...
- 如何实现PHP长网址与短网址
- 用责任链模式实现 OA 系统中的涨薪流程审批
- PHP的垃圾回收机制——引用计数
- 论HTTP性能,Go与.NET Core一争雌雄
- 【Webpack】devServer 实验报告