shell脚本监控https证书到期时间
上周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
评论: