shell脚本:通过域名获取证书的过期时间
时间:2022-07-26
本文章向大家介绍shell脚本:通过域名获取证书的过期时间,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
需要两个文件,一个用于存储域名信息,另一个是检测脚本
注意:这两个文件是在一个目录下
domain_ssl.info 【存储域名信息】
1 [root@mini05 20180930]# cat domain_ssl.info
2 # 检测百度域名
3 www.baidu.com:443
check_domain_time.sh 【检测脚本】
1 [root@mini05 20180930]# cat check_domain_time.sh
2 #!/bin/bash
3 ################ Version Info ##################
4 # Create Date: 2018-09-29
5 # Author: Zhang
6 # Mail: zhang@xxxx.com
7 # Version: 1.0
8 # Attention: 通过域名获取证书的过期时间
9 ################################################
10 # V1.0.0 2018-09-29 脚本编写 张
11 # 1.通过域名获取证书的过期时间
12 ################################################
13
14 # 加载环境变量
15 . /etc/profile
16 . ~/.bash_profile
17 . /etc/bashrc
18
19 # 脚本所在目录即脚本名称
20 script_dir=$( cd "$( dirname "$0" )" && pwd )
21 script_name=$(basename ${0})
22
23 readFile="${script_dir}/domain_ssl.info"
24 grep -v '^#' ${readFile} | while read line;do #读取存储了需要监测的域名的文件
25 # echo "${line}"
26 get_domain=$(echo "${line}" | awk -F ':' '{print $1}')
27 get_port=$(echo "${line}" | awk -F ':' '{print $2}')
28
29 # echo ${get_domain}
30 # echo "${get_port}"
31 # echo "======"
32
33 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 }' )
34 #使用openssl获取域名的证书情况,然后获取其中的到期时间
35 END_TIME1=$(date +%s -d "$END_TIME") #将日期转化为时间戳
36 NOW_TIME=$(date +%s -d "$(date | awk -F ' +' '{print $2,$3,$6}')") #将目前的日期也转化为时间戳
37
38 RST=$(($(($END_TIME1-$NOW_TIME))/(60*60*24))) # 到期时间减去目前时间再转化为天数
39
40 echo "${RST}"
41 done
执行结果
1 [root@mini05 20180930]# ./check_domain_time.sh
2 238
参考博文:linux学习第七十一篇:shell脚本:通过域名获取证书的过期时间并邮件告警
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Redis入坟(四)Redis内存回收知多少
- Redis入坟(五)持久化
- Python爬取杜赛博客教程内容,应用pdfkit打印pdf文件
- Java程序员必须知道的常用序列化技术及选型,Protobuf 原理详解
- Python异步编程之 协程 & asyncio & 异步
- Redis入坟(八)内存管理与优化,面试必考
- 逐行阅读Spring5.X源码(十二)AOP源码分析,难!面试官都不一定懂!
- 逐行阅读Spring5.X源码(十三)spring事务源码分析
- 线程池ThreadPoolExecutor 源码分析,面试官也就那么回事,他怎么敢!
- Spug - 轻量级自动化运维平台
- Callable/Future 使用及原理分析,Future .get()为啥能等待呢?
- 优雅的drop掉mysql库中1TB大表
- 《剑指offer》第19天:股票交易(校对)
- SwiftyUserDefaults-封装系统本地化的框架推荐
- “使用多target来构建大量相似App”,唐巧大神理论验证(附工程代码地址)