1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019-06-10 16:00 4 # @Author : Anthony.long 5 # @Site : 6 # @File : check_ssl_dated.py 7 # @Software: PyCharm 8 9 10 # 查询域名证书到期情况 11 12 import re 13 import time 14 import subprocess 15 from datetime import datetime 16 from io import StringIO 17 18 19 def main(domain): 20 f = StringIO() 21 start_time = time.strftime("%Y-%m-%d %X", time.localtime()) 22 23 comm = f"curl -Ivs https://{domain} --connect-timeout 5" 24 result = subprocess.getstatusoutput(comm) 25 f.write(result[1]) 26 27 end_time = time.strftime("%Y-%m-%d %X", time.localtime()) 28 29 start_date = re.search('(start date:.*?\n)', f.getvalue(), re.S).group().strip().split(': ')[1] 30 expire_date = re.search('(expire date:.*?\n)', f.getvalue(), re.S).group().strip().split(': ')[1] 31 subjectAltName_name = re.search('(subjectAltName:.*?\n)', f.getvalue(), re.S).group().strip().split(': ')[1] 32 issuer = re.search('(issuer:.*?\n)', f.getvalue(), re.S).group().strip().split(': ')[1] 33 34 # # time 字符串转时间数组 35 start_date = time.strptime(start_date, "%b %d %H:%M:%S %Y GMT") 36 start_date_st = time.strftime("%Y-%m-%d %H:%M:%S", start_date) 37 # # datetime 字符串转时间数组 38 expire_date = datetime.strptime(expire_date, "%b %d %H:%M:%S %Y GMT") 39 expire_date_st = datetime.strftime(expire_date, "%Y-%m-%d %H:%M:%S") 40 41 # # 剩余天数 42 remaining = (expire_date - datetime.now()).days 43 44 print('域名:', domain) 45 print('通用名:', subjectAltName_name) 46 print('证书开始使用时间:', start_date_st) 47 print('证书到期时间:', expire_date_st) 48 print(f'证书剩余可用时间: {remaining}天') 49 print('颁发机构:', issuer) 50 print('*' * 30) 51 52 time.sleep(0.5) 53 54 55 if __name__ == "__main__": 56 with open('domains.txt','r',encoding="utf-8") as file: 57 # with open('onlineDomains.txt', 'r', encoding="utf-8") as file: 58 for domain in file: 59 main(domain.strip())