基于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装饰器 免去调用父类构造函数的麻烦
May 18 Python
Python可跨平台实现获取按键的方法
Mar 05 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
python flask实现分页的示例代码
Aug 02 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
jupyter notebook 重装教程
Apr 16 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
详解Python中的for循环
Apr 30 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实现mysql数据库备份类
2008/03/20 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
js实现五星评价功能
2017/03/08 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
Django celery异步任务实现代码示例
2020/11/26 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
应届生财务管理求职信
2013/11/06 职场文书
《我是什么》教学反思
2016/02/16 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js