发送报警信息到企业微信里,企业微信机器人设置请自行百度~
ssl监控
#!/bin/bash
# 把需要监控的域名 填写在 下面的 数组里,中间使用 空格 分开
arr=(www.baidu.com:443 weixin.qq.com:443)
# 当前的时间戳
curr_date=`date +%s`
# 证书过期检查
for names_ssl in ${arr[@]};
do
#echo ${names_ssl}
name_temp_ssl=`echo ${names_ssl} | awk -F: '{print $1}'`
port_temp_ssl=`echo ${names_ssl} | awk -F: '{print $2}'`
#get https cert data
https_cert_date=$( timeout 25 openssl s_client -servername ${name_temp_ssl} -connect ${name_temp_ssl}:${port_temp_ssl} 2>/dev/null|openssl x509 -noout -dates 2>/dev/null)
#echo ${https_cert_date}
#get begin, end, curr date
#date_notBefore=$(echo "${https_cert_date}"|grep -w notBefore|cut -d = -f2)
date_notAfter=$(echo "${https_cert_date}"|grep -w notAfter|cut -d = -f2)
#begin_date=$(date +%s -d "${date_notBefore}")
# 获得过期时间 戳
end_date=$(date +%s -d "${date_notAfter}")
# 获得剩余天数
expiry_date=$(($((${end_date}-${curr_date}))/(60*60*24)))
# 输出
#echo "域名 ${names_ssl} ssl证书到期时间: ${date_notAfter} 剩余天数:${expiry_date}"
end_date_temp=`date -d @${end_date} "+%Y-%m-%d"`
# 测试时间为30天内过期就发告警
if [[ $expiry_date -lt 30 ]]
then
# 这个link是企业微信上的 群聊机器人助手、需要手动创建
link='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=ccccccccccccccccc'
# content 里面的内容,不允许出现空格,不然会被微信给截断
curl -X POST $link \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "markdown",
"markdown": {
"content": "
**有报警信息请注意**
>ssl证书信息: <font color=\"warning\">'${names_ssl}'</font>\n
>到期时间: <font color=\"info\">**'${end_date_temp}'**</font>\n
>剩余天数: <font color=\"red\">'${expiry_date},天后到期,请及时处理!!!'</font>"
}
}'
fi
done
域名监控
#!/bin/bash
#监控工具检查
which whois > /dev/null 2> /dev/null
if [ $? -ne 0 ]
then
yum install -y whois
fi
which bc > /dev/null 2> /dev/null
if [ $? -ne 0 ]
then
yum install -y bc
fi
# 把需要监控的域名 填写在 下面的 数组里,中间使用 空格 分开
arr=(baidu.com weixin.qq.com )
#域名过期检查
for var in ${arr[@]};
do
#拿到过期的日期,假设是非.cn 域名
e_d=`whois $var |grep 'Expiry Date' |awk '{print $4}' |cut -d 'T' -f 1`
# 为空
#(1)针对.cn 域名(无T,关键词:Expiration Time)
if [ -z "$e_d" ]; then
expiry_time=`whois $var |grep 'Expiration Time' |awk '{print $3" "$4}'`
while [ -z "$expiry_time" ]; do
sleep 3
expiry_time=`whois $var |grep 'Expiration Time' |awk '{print $3" "$4}'`
done
#(2) 针对非 .cn 域名(有T,关键字:Expiry Date)
## 如果不为空,对时分秒做转换(默认是UTC,少了8小时, 进行date -d 转换)
else
hms=`whois $var |grep 'Expiry Date' |awk '{print $4}' |cut -d 'T' -f 2`
e_d_hms=`date -d "$hms" | awk '{print $5}'`
expiry_time="$e_d $e_d_hms"
fi
#计算过期时间戳
e_d_s=`date -d "$expiry_time" +%s`
#echo "域名 $var 的过期时间戳为: ${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_day=`echo $expiry_time | awk '{print $1}'`
#echo "域名: ${var} 到期日期: ${expiry_time}, 剩余: $expiry_date 天 !!!!"
# 测试时间为30天内过期就发告警
if [[ $expiry_date -lt 30 ]]
then
DATE=`date +%F_%T`
#echo "域名:${var} 将在$expiry_day 到期,剩余天数: $expiry_date 天,请及时处理!!!"
# 这个link是企业微信上的 群聊机器人助手、需要手动创建
link='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=cccccccccccccccccccccc'
# content 里面的内容,不允许出现空格,不然会被微信给截断
curl -X POST $link \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "markdown",
"markdown": {
"content": "
**有报警信息请注意**
>域名名称: <font color=\"warning\">'${var}'</font>\n
>到期时间: <font color=\"info\">**'${expiry_day}'**</font>\n
>剩余天数: <font color=\"red\">'${expiry_date},天后到期,请及时处理!!!'</font>"
}
}'
fi
done文档更新时间: 2025-01-07 09:20 作者:月影鹏鹏