shell脚本监控https证书到期时间

post by rocdk890 / 2020-4-13 15:55 Monday linux技术
    上周5(2020年4月10号)正在认真的上班,突然手机支付宝来了一条信息,原本以为又是什么广告,没想到居然是一条转账信息,如下
  点击查看原图
    本来想给这位朋友回句谢谢的,但找了半天都没有找到怎么回复,所以我只好加到这篇文章开头里,这是我写blog以来,除了广告和友链收到的第一笔赞助费,我在这里由衷的感谢这位朋友的支持.

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

# 加载环境变量
. /etc/profile
. ~/.bash_profile
. /etc/bashrc

# 脚本所在目录即脚本名称
script_dir=$( cd "$( dirname "$0"  )" && pwd )
script_name=$(basename ${0})

readFile="${script_dir}/domain_ssl.info"
grep -v '^#' ${readFile} | while read line;do # 读取存储了需要监测的域名的文件
    # echo "${line}"
    get_domain=$(echo "${line}" | awk -F ':' '{print $1}')
    get_port=$(echo "${line}" | awk -F ':' '{print $2}')

    # echo ${get_domain}
    # echo "${get_port}"
    # echo "======"

    # 使用openssl获取域名的证书情况,然后获取其中的到期时间
    END_TIME=$(echo | openssl s_client -servername ${get_domain}  -connect ${get_domain}:${get_port} 2>/dev/null | openssl x509 -noout -dates |grep 'After'| awk -F '=' '{print $2}'| awk -F ' +' '{print $1,$2,$4 }' )

    END_TIME1=$(date +%s -d "$END_TIME") # 将日期转化为时间戳
    NOW_TIME=$(date +%s -d "$(date "+%Y-%m-%d %H:%M:%S")") # 将当前的日期也转化为时间戳
    RST=$(($(($END_TIME1 - $NOW_TIME))/(60*60*24))) # 到期时间减去目前时间再转化为天数

    echo "证书有效天数剩余:${RST}"

   if [ $RST -lt 30 ];then
     curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxx' -H 'Content-Type: application/json' -d ' {"msgtype": "text", "text": {"content": "'"$get_domain https 证书有效期少于30天,存在风险"'"}}'
   fi
done

cat /root/soft_shell/domain_ssl.info
blog.slogra.com:443

做好定时任务,每周检查一次就可以了.

ps:
本文根据以下链接进行了简单的修改:
https://www.dgstack.cn/archives/3227.html
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-772.html

标签: centos 时间 shell 监控 ssl 证书 https check 到期

评论: