基于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 相关文章推荐
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
使用python为mysql实现restful接口
Jan 05 Python
Python中sort和sorted函数代码解析
Jan 25 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
django富文本编辑器的实现示例
Apr 10 Python
Python流程控制 if else实现解析
Sep 02 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 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
域名和cookie问题(域名后缀)
2012/10/10 PHP
PHP异常处理Exception类
2015/12/11 PHP
详解YII关联查询
2016/01/10 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
vue将后台数据时间戳转换成日期格式
2019/07/31 Javascript
Django的models中on_delete参数详解
2019/07/16 Python
python numpy 反转 reverse示例
2019/12/04 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
python如何写个俄罗斯方块
2020/11/06 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
法国体育用品商店:GO Sport
2019/10/23 全球购物
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
旅游管理专业学生求职信
2013/09/28 职场文书
车间班组长的职责
2013/12/13 职场文书
销售找工作求职信
2013/12/20 职场文书
简历自我评价怎么写好呢?
2014/01/04 职场文书
管理专员自荐信
2014/01/26 职场文书
2014学年自我鉴定
2014/02/23 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
离婚协议书格式
2014/11/21 职场文书
商场广播稿范文
2015/08/19 职场文书
九年级英语教学反思
2016/02/15 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL