基于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开发编码规范
Sep 08 Python
python读取oracle函数返回值
Jul 18 Python
Python实现求数列和的方法示例
Jan 12 Python
神经网络相关之基础概念的讲解
Dec 29 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
基于python监控程序是否关闭
Jan 14 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
Python Map 函数的使用
Aug 28 Python
用python实现一个简单的验证码
Dec 09 Python
python+opencv实现车道线检测
Feb 19 Python
python实现股票历史数据可视化分析案例
Jun 10 Python
Python实现数据的序列化操作详解
Jul 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
如何过滤高亮显示非法字符
2006/10/09 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
ant design实现圈选功能
2019/12/17 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
python多线程编程中的join函数使用心得
2014/09/02 Python
Python中bisect的用法
2014/09/23 Python
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
django表单的Widgets使用详解
2019/07/22 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
《理想的风筝》教学反思
2014/04/11 职场文书
敬老院活动感想
2015/08/07 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python