当前位置: 首页 > news >正文

南昌哪里可以做电商网站网站宽屏背景

南昌哪里可以做电商网站,网站宽屏背景,wordpress调用标签代码,建站工具有哪些哈喽大家好,我是咸鱼 之前写了个 shell 版本的 SSL 证书过期巡检脚本 (文章:《SSL 证书过期巡检脚本》),后台反响还是很不错的 那么今天咸鱼给大家介绍一下 python 版本的 SSL 证书过期巡检脚本 (完整代码…

哈喽大家好,我是咸鱼

之前写了个 shell 版本的 SSL 证书过期巡检脚本 (文章:《SSL 证书过期巡检脚本》),后台反响还是很不错的

那么今天咸鱼给大家介绍一下 python 版本的 SSL 证书过期巡检脚本 (完整代码在文末)

思路

导入相关模块

import ssl
import socket
import time
from datetime import datetime

首先我们创建一个 domain.txt 用来存放要检查的域名和对应的 IP 地址

www.baidu.com:180.101.50.242,180.101.50.188
www.bing.com:202.89.233.101,202.89.233.100

我们读取该文件,把里面的域名和对应的每个 ip 取出来,并存放到字典 domains 里面

domains = {}
with open('domain.txt', 'r', encoding='utf-8') as file:for line in file:domain, ip_pool = line.strip().split(':')domains[domain] = ip_pool.split(',')

取出来之后我们循环遍历字典,去获取每个域名对应的证书信息(ssl_connect 函数)

def ssl_connect(domain, ip):# 设置socket的超时时间为5秒socket.setdefaulttimeout(5)# 创建默认的SSL上下文context = ssl.create_default_context()# 创建一个SSL套接字skt = context.wrap_socket(socket.socket(), server_hostname=domain)try:# 建立SSL连接skt.connect((ip, 443))# 获取证书过期时间end_date = skt.getpeercert()['notAfter'].strip(' GMT')# 创建一个字典,存储本次连接中的域名、IP 地址和证书过期时间信息skt_info = {'domain': domain, 'ip': ip, 'end_date': end_date}except ssl.CertificateError as e:cert = eexcept socket.timeout:cert = 'Connect refused'except ConnectionResetError as e:cert = 'Connect reset' + str(e)except socket.gaierror as e:cert = 'Connnect gaierror'finally:# 关闭SSL套接字skt.close()return skt_info

ssl_connect 函数返回一个字典 skt_info,包含当前连接的域名、ip 地址和证书过期时间

# skt_info 内容
{'domain': 'www.baidu.com', 'ip': '180.101.50.242', 'end_date': 'Aug  6 01:51:05 2024'}
{'domain': 'www.baidu.com', 'ip': '180.101.50.188', 'end_date': 'Aug  6 01:51:05 2024'}
{'domain': 'www.bing.com', 'ip': '202.89.233.101', 'end_date': 'Aug 16 03:47:45 2023'}
{'domain': 'www.bing.com', 'ip': '202.89.233.100', 'end_date': 'Aug 16 03:47:45 2023'}

然后我们调用 check_cert_time 函数进行证书有效期检查和提示

info = [ssl_connect(domain, ip) for domain, ip_pool in domains.items() for ip in ip_pool]
[check_cert_time(i) for i in info]

check_cert_time 函数内容如下:

def check_cert_time(info):# 获取当前时间戳current_timestamp = int(time.time())# 将证书过期时间转换成时间戳date_object = datetime.strptime(info['end_date'], "%b %d %H:%M:%S %Y")end_timestamp = int(date_object.timestamp())# 计算剩余天数remain_day = (end_timestamp - current_timestamp) / 86400# 打印域名、IP 地址和证书过期时间信息print(f"域名:{info['domain']},ip 地址:{info['ip']},证书过期时间:{info['end_date']}")# 根据剩余天数进行不同的提示# 如果证书过期时间减去当前时间的天数小于七天的话,则提示需要准备更换证书了if 0 < remain_day < 7:print('剩余时间小于七天!请及时更换证书!')elif remain_day < 0:print('证书已过期!请及时更换证书!')else:print(f"剩余天数为:{remain_day:.2f}天\n")

最后我们执行一下代码,看看结果如何
在这里插入图片描述

完整代码

import ssl
import socket
import time
from datetime import datetimedef ssl_connect(domain, ip):# 设置socket的超时时间为5秒socket.setdefaulttimeout(5)# 创建默认的SSL上下文context = ssl.create_default_context()# 创建一个SSL套接字skt = context.wrap_socket(socket.socket(), server_hostname=domain)try:# 建立SSL连接skt.connect((ip, 443))# 获取证书过期时间end_date = skt.getpeercert()['notAfter'].strip(' GMT')# 创建一个字典,存储本次连接中的域名、IP 地址和证书过期时间信息skt_info = {'domain': domain, 'ip': ip, 'end_date': end_date}except ssl.CertificateError as e:cert = eexcept socket.timeout:cert = 'Connect refused'except ConnectionResetError as e:cert = 'Connect reset' + str(e)except socket.gaierror as e:cert = 'Connnect gaierror'finally:# 关闭SSL套接字skt.close()return skt_infodef check_cert_time(info):# 获取当前时间戳current_timestamp = int(time.time())# 将证书过期时间转换成时间戳date_object = datetime.strptime(info['end_date'], "%b %d %H:%M:%S %Y")end_timestamp = int(date_object.timestamp())# 计算剩余天数remain_day = (end_timestamp - current_timestamp) / 86400# 打印域名、IP 地址和证书过期时间信息print(f"域名:{info['domain']},ip 地址:{info['ip']},证书过期时间:{info['end_date']}")# 根据剩余天数进行不同的提示# 如果证书过期时间减去当前时间的天数小于七天的话,则提示需要准备更换证书了if 0 < remain_day < 7:print('剩余时间小于七天!请及时更换证书!')elif remain_day < 0:print('证书已过期!请及时更换证书!')else:print(f"剩余天数为:{remain_day:.2f}天\n")if __name__ == "__main__":domains = {}with open('domain.txt', 'r', encoding='utf-8') as file:for line in file:domain, ip_pool = line.strip().split(':')domains[domain] = ip_pool.split(',')info = [ssl_connect(domain, ip) for domain, ip_pool in domains.items() for ip in ip_pool][check_cert_time(i) for i in info]
http://www.yayakq.cn/news/576060/

相关文章:

  • 做网站一定要域名嘛图片识别搜索引擎
  • jsp网站建设技术案例ajax wordpress地址
  • 寿县移动公司网站建设网站开发算是研发支出吗
  • 保险咨询网站建设在线ps图
  • 安阳县崔家桥职业中专优化网站排名公司
  • 做个模板网站多少钱网站域名注册的相关证书证明文件
  • 做信息采集的网站微信网站平台建设
  • 网站目的百度人工电话
  • 福建人力资源建设网站wordpress怎么看访问
  • 做国际网站的流程外贸网站域名能用cn做后缀吗
  • 创建网站投资多少钱微信小程序模板使用
  • 西安搜建站科技网站手机网站图片 触摸 放大代码 js
  • 营销型网站建设题品牌公司
  • 深圳沙井做网站公司wordpress更好域名
  • 网站程序开发的基本步骤网站建立多少钱
  • 奇缦科技珠海网站建设优化江苏建设人才网站
  • wordpress托管 根目录网站优化怎么做关键词排名
  • 如何让百度收录我的网站四川城乡和住房建设厅网站首页
  • 交互网站开发萧山做网站公司
  • 做众筹网站要什么资质作图神器
  • 长沙市城市建设档案馆网站大良网站建设市场
  • 移动宽带过期了怎么续费淄博seo方案
  • 网站空间搭建网站对于企业的作用
  • 中医院网站素材企业网站怎么做才能留住客户
  • 郑州租赁房网站建设移动物联网流量卡
  • 网易考拉的网站建设信息化管理软件
  • 中石化网站是哪个公司做的医疗ppt模板下载免费完整版
  • 那些网站百度抓取率比较高wordpress会员通知插件
  • 陕西省建设工程施工许可证查询网站wordpress 水果主题
  • 故城建设银行网站绍兴市住房和城乡建设局网站