本文共 1752 字,大约阅读时间需要 5 分钟。
证书有效期监控脚本并发送钉钉通知
#!/bin/env bash################ Version Info ################### Author: Bertram# Version: 1.0# Attention: 通过域名获取证书的过期时间# Cron: 0 10 * * 3 check-cert-expire################################################# 加载环境变量. /etc/profile. ~/.bash_profile. /etc/bashrc# 脚本所在目录即脚本名称script_dir=$( cd "$( dirname "$0" )" && pwd )script_name=$(basename ${ 0})date=$(date +%Y-%m-%d_%H:%m)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") # 将日期转化为时间戳 END_TIME2=$(date -d @${ END_TIME1} +"%F") # 将时间戳转化为日期 NOW_TIME=$(date +%s -d "$(date "+%Y-%m-%d %H:%M:%S")") # 将当前的日期也转化为时间戳 RST=$(($(($END_TIME1 - $NOW_TIME))/(60*60*24))) # 到期时间减去目前时间再转化为天数# echo -e "\e[34m ---------$date-------- \e[0m" >> /tmp/cert.log echo "${get_domain}:证书有效天数剩余:${RST}天" >> /tmp/cert.log echo -e "\e[34m ---------$date-------- \e[0m" >> /tmp/cert.log if [ $RST -lt 30 ];then curl 'https://oapi.dingtalk.com/robot/send?access_token=dxxc13a5555xxbeb7f43f237929e4aaf24d5c26a7d91xxfe74c0c1eee1' -H 'Content-Type: application/json' -d ' {"msgtype": "text", "text": {"content": "'"域名${get_domain} 使用的SSL证书还有${RST}天过期,过期时间${END_TIME2}。为防止业务受影响,请及时更换!"'"}}' &>/dev/null fidone
转载地址:http://vhelf.baihongyu.com/