[root@small-node2 ~]# cat check-yuming-time.sh
#!/bin/bash
################ Version Info ##################
# Create Date: 2022-10-14
# Author: Ansheng
# Attention: 通过域名获取证书的过期时间
################################################
# V1.0.0 2018-09-29 脚本编写
# 1.通过域名获取证书的过期时间
################################################
# 加载环境变量
. /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 "======"
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 }' )
#使用openssl获取域名的证书情况,然后获取其中的到期时间
END_TIME1=$(date +%s -d "$END_TIME") #将日期转化为时间戳
NOW_TIME=$(date +%s -d "$(date | awk -F ' +' '{print $2,$3,$6}')") #将目前的日期也转化为时间戳
RST=$(($(($END_TIME1-$NOW_TIME))/(60*60*24))) # 到期时间减去目前时间再转化为天数
echo "${RST}"
done
[root@small-node2 ~]# cat domain_ssl.info
date4truth.sharepoint.cn:443
[root@small-node2 ~]# sh check-yuming-time.sh
225