基于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 25 Python
教大家玩转Python字符串处理的七种技巧
Mar 31 Python
Python深度优先算法生成迷宫
Jan 22 Python
python计算日期之间的放假日期
Jun 05 Python
python多任务及返回值的处理方法
Jan 22 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
Django REST framework 视图和路由详解
Jul 19 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
python实现ftp文件传输功能
Mar 20 Python
什么是python类属性
Jun 10 Python
Python内置数据结构列表与元组示例详解
Aug 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
discuz的php防止sql注入函数
2011/01/17 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
2014/05/10 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
php测试kafka项目示例
2020/02/06 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
很棒的vue弹窗组件
2017/05/24 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
2014年教师业务学习材料
2014/05/12 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技