基于python检查SSL证书到期情况代码实例


Posted in Python onApril 04, 2020

结合邮件告警和页面展示,再多的域名证书到期情况即可立马知道

代码示例:

# coding: utf-8 
# 查询域名证书到期情况

import re
import time
import subprocess
from datetime import datetime
from io import StringIO

def main(domain):
  f = StringIO()
  comm = f"curl -Ivs https://{domain} --connect-timeout 10"

  result = subprocess.getstatusoutput(comm)
  f.write(result[1])

  m = re.search('start date: (.*?)\n.*?expire date: (.*?)\n.*?common name: (.*?)\n.*?issuer: CN=(.*?)\n', f.getvalue(), re.S)
  start_date = m.group(1)
  expire_date = m.group(2)
  common_name = m.group(3)
  issuer = m.group(4)

  # time 字符串转时间数组
  start_date = time.strptime(start_date, "%b %d %H:%M:%S %Y GMT")
  start_date_st = time.strftime("%Y-%m-%d %H:%M:%S", start_date)
  # datetime 字符串转时间数组
  expire_date = datetime.strptime(expire_date, "%b %d %H:%M:%S %Y GMT")
  expire_date_st = datetime.strftime(expire_date,"%Y-%m-%d %H:%M:%S")

  # 剩余天数
  remaining = (expire_date-datetime.now()).days

  print ('域名:', domain)
  print ('通用名:', common_name)
  print ('开始时间:', start_date_st)
  print ('到期时间:', expire_date_st)
  print (f'剩余时间: {remaining}天')
  print ('颁发机构:', issuer)
  print ('*'*30)

  time.sleep(0.5)

if __name__ == "__main__":
  domains = ['www.baidu.com'] 
  for domain in domains:
    main(domain)

结果示例:

域名: www.baidu.com
通用名: baidu.com
开始时间: 2019-05-09 01:22:02
到期时间: 2020-06-25 05:31:02
剩余时间: 82天
颁发机构: GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
******************************

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
python实现简单爬虫功能的示例
Oct 24 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
Jan 08 Python
python与caffe改变通道顺序的方法
Aug 04 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
python中map的基本用法示例
Sep 10 Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
python与idea的集成的实现
Nov 20 Python
python zip,lambda,map函数代码实例
Apr 04 #Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 #Python
150行Python代码实现带界面的数独游戏
Apr 04 #Python
Python decorator拦截器代码实例解析
Apr 04 #Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 #Python
Python实现多线程下载脚本的示例代码
Apr 03 #Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 #Python
You might like
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
理解javascript正则表达式
2016/03/08 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
简单实现python进度条脚本
2017/12/18 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Python 切分数组实例解析
2019/11/07 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
Python常用外部指令执行代码实例
2020/11/05 Python
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
税务职业生涯规划书范文
2014/09/16 职场文书
整改通知书格式
2015/04/22 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang