基于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中分数的相关使用教程
Mar 30 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
window下eclipse安装python插件教程
Apr 24 Python
python+pyqt实现右下角弹出框
Oct 26 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
python 日期操作类代码
May 05 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
pycharm 2018 激活码及破解补丁激活方式
Sep 21 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
Jun 18 Python
Python如何定义有默认参数的函数
Aug 10 Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 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实现的随机广告显示代码
2007/06/14 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
jQuery 使用手册(一)
2009/09/23 Javascript
一些技巧性实用js代码小结
2009/10/14 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
jquery处理json对象
2014/11/03 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
Pyside2中嵌入Matplotlib的绘图的实现
2021/02/22 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
学校运动会广播稿范文
2014/10/02 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
小学教学工作总结2015
2015/05/13 职场文书
卫生保健工作总结2015
2015/05/18 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js