公司因为业务原因,注册了各种域名,大约有50多个吧。
因为域名后缀不同,分别注册在不同的域名服务商。
注册的时间和时长也各不相同,为避免出现域名过期而忘记续费,想出用zabbix来监控域名还剩多少天到期,以提醒续费。
比较好的域名信息查询工具是whois命令,whois + 要查询的域名就能得到相关信息。
因为.com、.cn还有.tw的域名信息都是不一样的,我不会写代码能力有限,所以分成三个脚本来分别处理。
切换到zabbix默认的外部检查脚本目录下
cd /usr/lib/zabbix/externalscripts/
新增com域名监控脚本
sudo nano domaincheck-com.sh
填入如下内容
#!/bin/bash
DOMAINS=$1
current_epoch=`date '+%s'`
expiry_date=`whois $1 | egrep -i "Expiration Date:|Expires on"| head -1 | awk '{print $NF}'`
expiry_epoch=`date --date="$expiry_date" '+%s'`
epoch_diff=`expr $expiry_epoch - $current_epoch`
echo `expr $epoch_diff / 86400`
然后赋予可执行权限
sudo chmod +x domaincheck-com.sh
测试一下是否可以获取剩余天数
./domaincheck-com.sh baidu.com
如正常这里会返回域名到期天数
然后新增一个模板,在监控项中填写键值:domaincheck-com.sh["{HOST.CONN}"]
类型:外部检查
信息类型:浮点数
单位:days
更新间隔:12h
然后根据需求填写相应的报警触发机制
另外两个模板制作方法类似,这里就不做复述了。
这里附上.cn和.tw获取域名剩余天数的脚本
CN域名的脚本domaincheck-cn.sh内容:
#!/bin/bash
DOMAINS=$1
current_epoch=`date '+%s'`
expiry_date=`whois $1 | egrep -i "Expiration Time:|Expires on"| head -1 | awk '{print $NF2}'`
d1=${expiry_date#*:}
expiry_epoch=`date --date="$d1" '+%s'`
epoch_diff=`expr $expiry_epoch - $current_epoch`
echo `expr $epoch_diff / 86400`
TW域名的脚本domaincheck-tw.sh内容:
#!/bin/bash
DOMAINS=$1
current_epoch=`date '+%s'`
expiry_date=`whois $1 | egrep -i "Record expires on:|Expires on"| head -1 | awk '{print $NF2}'`
d1=${expiry_date#*on}
expiry_epoch=`date --date="$d1" '+%s'`
epoch_diff=`expr $expiry_epoch - $current_epoch`
echo `expr $epoch_diff / 86400`
评论
发表评论