shell脚本监控https证书到期时间,并支持钉钉和企业微信通知

post by rocdk890 / 2024-1-22 17:01 Monday linux技术
    之前的证书监控脚本在我服务器一直正常运行,在22年底的时候给一个客户做证书监控,然后客户提出要求同时支持企业微信和钉钉一起发通知,并希望能在证书快到期之前发通知提醒,所以我对之前那个脚本进行修改后,现在线上正常运行了快一年了.下面我们来看脚本:

cat /root/soft_shell/check_https.sh
#!/bin/bash
################ Version Info ##################
# DAte:        2023/2/27
# Author:      rocdk890
# Version:     2.0
# Attention:   通过域名获取证书的过期时间
################################################

# 钉钉机器人access_token
DD_TOKEN="https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxx"
# 企业微信机器人key
WX_KEY="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxx"

# 存储需要监控的域名文件
file="/root/soft_shell/domain_ssl.info"

# 遍历域名文件中的每一个域名
while read line; do
    # 忽略以 # 开头的注释行
    if [[ $line == \#* ]]; then
        continue
    fi

    host=$(echo "${line}" | awk -F ':' '{print $1}')
    port=$(echo "${line}" | awk -F ':' '{print $2}')

    # 计算 SSL 证书到期剩余天数
    end_time=$(date +%s -d "$(echo | openssl s_client -servername $host -connect $host:$port 2>/dev/null | openssl x509 -noout -dates | grep 'After' | awk -F '=' '{print $2}' | awk -F ' +' '{print $1,$2,$4 }')")
    now_time=$(date +%s -d "$(date "+%Y-%m-%d %H:%M:%S")")
    days=$(($(($end_time - $now_time))/(60*60*24)))

    # 判断是否需要发送消息
    if [ $days -eq 30 ] || [ $days -eq 15 ] || ([ $days -le 7 ] && [ $days -gt 0 ]); then
        # 判断是否已经发送过此消息
        if grep -q "$host:$port:$days" /tmp/domain_ssl_alert.log; then
            continue
        fi

        # 发送钉钉和企业微信消息
        curl ${DD_TOKEN} -H 'Content-Type: application/json' -X POST --data '{"msgtype":"text","text":{"content":"告警域名: \n'$host' \n\nSSL证书到期时间剩余:'$days' 天\n"}}'
        curl ${WX_KEY} -H 'Content-Type:application/json' -d '{"msgtype":"text","text":{"content":"告警域名: \n'$host' \n\nSSL证书到期时间剩余:'$days' 天\n"}}'

        # 记录已发送消息的域名和天数
        echo "$host:$port:$days" >> /tmp/domain_ssl_alert.log
    fi
done < "$file"


要监控的域名,这里以我自己的域名为例:
cat /root/soft_shell/domain_ssl.info
blog.slogra.com:443

在crontab里设置每天早上9点35进行检查(因为我9点半上班,所以设置成9点35进行检查的话,这样不会看漏掉消息)
35 9 * * * /bin/bash /root/soft_shell/check_https.sh

好了,最后提醒你们记得提前把钉钉和企业微信的机器人的key准备好.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-808.html

标签: shell 监控 ssl 证书 通知 钉钉 到期 企业微信 微信 到期时间

评论: