获取SSL证书过期时间
#!/bin/bash
# auth:amu
# date:2021-7-12 14:50
# 脚本所在目录即脚本名称
script_dir=$( cd "$( dirname "$0" )" && pwd )
script_name=$(basename ${0})
num=1
function check_date(){
END_TIME=$(echo | openssl s_client -servername ${get_domain} -connect ${get_domain}:${get_port} 2>/dev/null | openssl x509 -noout -dates 2>/dev/null |grep 'After'| awk -F '=' '{print $2}'| awk -F ' +' '{print $1,$2,$4 }' 2>/dev/null )
#使用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 "$num ${get_domain} ${RST}天"
num=`expr $num + 1`
}
readFile="${script_dir}/domain_ssl.info"
grep -v '^#' ${readFile} | while read line;do #读取存储了需要监测的域名的文件
#get_domain=$(echo "${line}" | awk -F ':' '{print $1}')
#get_port=$(echo "${line}" | awk -F ':' '{print $2}')
get_domain=$(echo "${line}")
get_port="443"
curl -s -I --connect-timeout 2 https://${get_domain} >/dev/null
if [ $? -ne 0 ];then
curl -s -I --connect-timeout 2 ${get_domain} >/dev/null
if [ $? -eq 0 ];then
check_date
else
echo "$num ${get_domain} 无效"
num=`expr $num + 1`
fi
else
check_date
fi
done