基于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 json模块使用实例
Apr 11 Python
Python装饰器基础详解
Mar 09 Python
python分割列表(list)的方法示例
May 07 Python
python实现类之间的方法互相调用
Apr 29 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
Python面向对象封装操作案例详解
Dec 31 Python
Python 简单计算要求形状面积的实例
Jan 18 Python
python中的 zip函数详解及用法举例
Feb 16 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
在Python中字典按值排序的实现方法
Nov 12 Python
解决pytorch下出现multi-target not supported at的一种可能原因
Feb 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP遍历XML文档所有节点的方法
2015/03/12 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
React Router基础使用
2017/01/17 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
分享一个简单的python读写文件脚本
2017/11/25 Python
Python中遍历列表的方法总结
2019/06/27 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python可以用来做什么
2020/11/23 Python
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
老师推荐信
2013/10/28 职场文书
信息员培训方案
2014/06/12 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
科技工作者先进事迹
2014/08/16 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
2014幼儿园教师个人工作总结
2014/11/08 职场文书
升学宴家长致辞
2015/07/27 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书