基于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 相关文章推荐
在Django框架中设置语言偏好的教程
Jul 27 Python
详解如何利用Cython为Python代码加速
Jan 27 Python
python实现txt文件格式转换为arff格式
May 31 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
Jan 10 Python
python中Django文件上传方法详解
Aug 05 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
python tqdm实现进度条的示例代码
Nov 10 Python
使用sublime text3搭建Python编辑环境的实现
Jan 12 Python
python中Pexpect的工作流程实例讲解
Mar 02 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 Python
Python闭包的定义和使用方法
Apr 11 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 Document 代码注释规范
2009/04/13 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
PHP模块memcached使用指南
2014/12/08 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
浅谈php调用python文件
2019/03/29 PHP
js获取指定日期前后的日期代码
2013/08/20 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
Python的Flask框架的简介和安装方法
2015/11/13 Python
python自动裁剪图像代码分享
2017/11/25 Python
pandas值替换方法
2018/07/10 Python
python实现飞机大战
2018/09/11 Python
基于python检查矩阵计算结果
2020/05/21 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
值传递还是引用传递
2015/02/08 面试题
期末考试动员演讲稿
2014/01/10 职场文书
劳动之星获奖感言
2014/02/01 职场文书
工厂搬迁方案
2014/05/11 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
酒会邀请函
2015/01/31 职场文书
中学教师个人总结
2015/02/10 职场文书
考研经验交流会策划书
2015/11/02 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python