基于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数据类型转换函数总结
Mar 11 Python
python里大整数相乘相关技巧指南
Sep 12 Python
Python进程通信之匿名管道实例讲解
Apr 11 Python
用python写的一个wordpress的采集程序
Feb 27 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
Mar 04 Python
keras中的卷积层&池化层的用法
May 22 Python
Python pymsql模块的使用
Sep 07 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树的代码,可以嵌套任意层
2006/10/09 PHP
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
默默小谈PHP&MYSQL分页原理及实现
2007/01/02 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
node+multer实现图片上传的示例代码
2020/02/18 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python读写文件方法总结
2015/06/09 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Python socket模块方法实现详解
2019/11/05 Python
Python sublime安装及配置过程详解
2020/06/29 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
类和结构的区别
2012/08/15 面试题
软件测试面试题
2014/01/05 面试题
建筑专业自我鉴定
2013/10/22 职场文书
最新大学职业规划书范文
2013/12/30 职场文书
幼儿老师求职信
2014/06/30 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
2015年综治维稳工作总结
2015/04/07 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
关于的python五子棋的算法
2022/05/02 Python