欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell脚本:通过域名获取证书的过期时间

程序员文章站 2022-03-19 13:27:25
...

需要两个文件,一个用于存储域名信息,另一个是检测脚本
注意:这两个文件是在一个目录下

domain_ssl.info 【存储域名信息】
[aaa@qq.com 20180930]# cat domain_ssl.info 
# 检测百度域名
www.baidu.com:443
check_domain_time.sh 【检测脚本】
[aaa@qq.com 20180930]# cat check_domain_time.sh 
#!/bin/bash
################ Version Info ##################
# Create Date: 2018-09-29
# Author:      Zhang
# Mail:        aaa@qq.com
# Version:     1.0
# 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
执行结果
[aaa@qq.com 20180930]# ./check_domain_time.sh 
238

参考博文:linux学习第七十一篇:shell脚本:通过域名获取证书的过期时间并邮件告警

shell脚本:通过域名获取证书的过期时间

相关标签: shell