基于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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
pandas对指定列进行填充的方法
Apr 11 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
超实用的 30 段 Python 案例
Oct 10 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
python从ftp获取文件并下载到本地
Dec 05 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
Python实现GIF动图以及视频卡通化详解
Dec 06 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/01 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php提交post数组参数实例分析
2015/12/17 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
在Django的URLconf中使用命名组的方法
2015/07/18 Python
python多线程方式执行多个bat代码
2016/06/07 Python
python中类的属性和方法介绍
2018/11/27 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
艺术设计专业个人求职信
2013/09/21 职场文书
详细的大学生创业计划书模板
2014/01/27 职场文书
教师个人剖析材料
2014/02/05 职场文书
外贸专业求职信
2014/03/09 职场文书
房屋转让协议书范本
2014/04/11 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
长城导游词
2015/01/30 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js