基于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利用IPython提高开发效率
Aug 10 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
python更改已存在excel文件的方法
May 03 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
Python操作SQLite数据库过程解析
Sep 02 Python
基于python3生成标签云代码解析
Feb 18 Python
Python发送邮件封装实现过程详解
May 09 Python
python os.listdir()乱码解决方案
Jan 31 Python
PyCharm2020.3.2安装超详细教程
Feb 08 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就可用
2010/10/12 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
使用angular写一个hello world
2015/01/23 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
巧用canvas
2017/01/21 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
js实现可爱的气泡特效
2020/09/05 Javascript
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
Python中input和raw_input的一点区别
2014/10/21 Python
Python读写配置文件的方法
2015/06/03 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
Python中生成ndarray实例讲解
2021/02/22 Python
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
小学生期末评语大全
2014/04/21 职场文书
护士感人事迹
2014/05/01 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书