基于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中的装饰器的用法
Apr 24 Python
Python实现统计英文单词个数及字符串分割代码
May 28 Python
Python采用Django开发自己的博客系统
Sep 29 Python
神经网络理论基础及Python实现详解
Dec 15 Python
理解python中生成器用法
Dec 20 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
centos6.8安装python3.7无法import _ssl的解决方法
Sep 17 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
python为什么要安装到c盘
Jul 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
深入array multisort排序原理的详解
2013/06/18 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
js css样式操作代码(批量操作)
2009/10/09 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
python实现扫描ip地址的小程序
2019/04/16 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
周鸿祎:教你写创业计划书
2013/12/30 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
2014年营销工作总结
2014/11/22 职场文书
平安家庭事迹材料
2014/12/20 职场文书
高校教师个人总结
2015/02/10 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
售后服务质量承诺书
2015/04/29 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
解析python中的jsonpath 提取器
2022/01/18 Python