Linux Bash 脚本实战:自动监控域名证书过期并发送邮件告警

news2025/4/8 0:44:42

在日常运维工作中,SSL 证书的管理是一个非常重要的环节,尤其对于线上业务来说,证书到期会直接导致服务不可用。为了避免证书到期带来的风险,我们可以编写一个 Bash 脚本来自动检测域名的 SSL 证书过期时间,并在证书即将到期时发送告警邮件。

目录

脚本功能概述

代码实现

1、配置部分

2、获取域名证书过期时间

3、发送邮件告警

4、监控域名列表

5、配置需要监控的域名

使用方法

 完整脚本如下

总结


脚本功能概述

这个脚本主要完成以下几项任务:

  1. 获取域名 SSL 证书的过期时间:利用 openssl 命令提取证书的 notAfter 信息。

  2. 计算证书剩余天数:将 notAfter 转换为时间戳,计算剩余天数。

  3. 分类告警

    • 普通告警(证书剩余时间小于 30 天)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2330129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【模型量化】GPTQ 与 AutoGPTQ

GPTQ是一种用于类GPT线性最小二乘法的量化方法,它使用基于近似二阶信息的一次加权量化。 本文中也展示了如何使用量化模型以及如何量化自己的模型AutoGPTQ。 AutoGPTQ:一个易于使用的LLM量化包,带有用户友好的API,基于GPTQ算法(仅…

学透Spring Boot — 018. 优雅支持多种响应格式

这是我的专栏《学透Spring Boot》的第18篇文章,想要更系统的学习Spring Boot,请访问我的专栏:学透 Spring Boot_postnull咖啡的博客-CSDN博客。 目录 返回不同格式的响应 Spring Boot的内容协商 控制器不用任何修改 启动内容协商配置 访…

C++中的多态和模板

#include <iostream> #include <cstdlib> #include <ctime> #include <string>using namespace std;// 武器基类 class Weapon { public:virtual ~Weapon() {}virtual string getName() const 0; // 获取武器名称virtual int getAtk() const 0; …

Wireshark 安装保姆教程(图文详解)

一、Wireshark 简介 Wireshark是使用最广泛的一款开源抓包软件&#xff0c;常用来检测网络问题、攻击溯源、或者分析底层通信机制。它使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换&#xff0c;它支持在 Windows、Mac OS、Linux 等多种主流操作系统上运行 &…

下载安装Node.js及其他环境

提示&#xff1a;从Node版本降级到Vue项目运行 文章目录 下载Node.js环境配置配置环境变量 安装 cnpm&#xff08;我需要安装&#xff09;安装脚手架安装依赖安装淘宝镜像&#xff08;注意会更新&#xff09;cnpm vs npm 与新旧版本核心差异包管理器不同功能差异如何选择&#…

MyBatis Plus 在 ZKmall开源商城持久层的优化实践

ZKmall开源商城作为基于 Spring Cloud 的高性能电商平台&#xff0c;其持久层通过 MyBatis Plus 实现了多项深度优化&#xff0c;涵盖分库分表、缓存策略、分页性能、多租户隔离等核心场景。以下是具体实践总结&#xff1a; 一、分库分表与插件集成优化 1. 分库分表策略 ​Sh…

rust 同时处理多个异步任务,并在一个任务完成退出

use std::thread; use tokio::{sync::mpsc,time::{sleep, Duration}, };async fn check_for_one() {// 该函数会每秒打印一次 "write"loop {println!("write");sleep(Duration::from_secs(1)).await;} }async fn start_print_task() -> Result<(), (…

使用注解开发springMVC

引言 在学习过第一个springMVC项目建造过后&#xff0c;让我们直接进入真实开发中所必需的注解开发&#xff0c; 是何等的简洁高效&#xff01;&#xff01; 注&#xff1a;由于Maven可能存在资源过滤的问题&#xff0c;在maven依赖中加入 <build><resources>&l…

【Axure元件分享】时间范围选择器

时间范围选择器下拉选择开始时间和结束时间&#xff0c;实现效果如下。 源文件截图&#xff1a; 元件获取方式&#xff1a;

【Linux操作系统——学习笔记三】Linux环境下多级目录构建与管理的命令行实践报告

1.在用户主目录下&#xff0c;使用以下方法新建目录&#xff0c;并显示详细执行过程&#xff1a; &#xff08;1&#xff09;使用绝对路径在当前目录下创建 new_dir目录 &#xff08;2&#xff09;使用相对路径、在当前目录创建dir1、dir2、dir3目录 &#xff08;3&#xff09…

C# 与 相机连接

一、通过组件连接相机 需要提前在VisionPro里面保存一个CogAcqFifoTool相机工具为 .vpp 定义一个相机工具 CogAcqFifoTool mAcq null;将保存的相机工具放入mAcq中 string path “C:\Acq.vpp”; mAcq (CogAcqFifoTool)CogSerializer.LoadObjectFrommFile(path);给窗口相机…

JAVA学习小记之IO流04--转换流篇

转换流: 按照A规则存储&#xff0c;同样按照A规则解析&#xff0c;那么就能显示正确的文本符号。反之&#xff0c;按照A规则存储&#xff0c;再按照B规则解析&#xff0c;就会导致乱码现象。 转换的原因是&#xff1a; 有的文件并非是按UTF-8编码&#xff0c;那么在读文件内容…

SH 和 BASH 有什么不同 ?

当谈到 shell 脚本编写时&#xff0c;经常出现两个突出的 shell&#xff0c;Bourne shell (SH) 和 Bourne Again shell (Bash)。两者都是基于 unix 和 linux 的系统的组成部分&#xff0c;提供与操作系统交互的接口。本文旨在深入研究这两种 shell 之间的复杂差异&#xff0c;揭…

Qt 音乐播放器项目

具体代码见&#xff1a;https://gitee.com/Suinnnnnn/MusicPlayer 文章目录 0. 预备1. 界面1.1 各部位长度1.2 ui文件1.3 窗口前置设置1.4 设置QSS 2. 自定义控件2.1 按钮2.2 推荐页面2.3 CommonPage2.4 滑杆 3. 音乐管理4. 歌词界面4.1 ui文件4.2 LrcPage.h文件 5. 音乐播放控…

.NET用C#在PDF文档中添加、删除和替换图片

在当今数字化文档处理场景中&#xff0c;动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一。通过C#在.NET平台实现图片的添加、替换和删除功能&#xff0c;不仅能显著提升PDF文档的视觉表现力与信息承载效率&#xff0c;更可满足数据动态更新、内容精准维护等复杂业…

anaconda安装使用+pytorch环境配置(cpu)+pycharm环境配置(详细教程)

一、anaconda下载 1.anaconda官网尝试下载&#xff1a; 官网网址&#xff1a;Anaconda | Built to Advance Open Source AI 1.进入官网 2.点击Products->Distribution&#xff0c;跳过注册进入下载页面 3.选择系统下载 2.清华镜像下载 1.网址&#xff1a;Index of /anac…

c++STL入门

目录 什么是STL&#xff1f; vector容器 构造函数 赋值操作 vector容量和大小 vector存放内置数据类型 vector存放自定义数据类型 存放指针 vector容器嵌套容器 string容器 构造函数 赋值操作 字符串拼接 查找和替换 string字符串比较 string字符存取 string插…

electron-update + nginx热更新

1.安装"electron-updater": “^6.6.2”, npm i electron-updater2.创建checkUpdate.js // 引入自动更新 const {autoUpdater} require(electron-updater); const { dialog } require(electron); // 自动更新检查 export function checkForUpdates() {// 检查新版…

前端知识点---本地存储(javascript)

localStorage 是浏览器提供的一个 本地存储 API&#xff0c;可以在用户的浏览器中存储数据&#xff0c;数据不会随页面刷新而丢失。 1. 基本用法 (1) 存储数据&#xff08;setItem&#xff09; localStorage.setItem("username", "zhangsan");存储 “use…

QML 批量创建模块 【Repeater】 组件详解

在 QML 中&#xff0c;Repeater 组件是一种非常实用的工具&#xff0c;能够批量创建控件&#xff0c;尤其是在我们需要根据数据动态生成多个相同类型的控件时。无论是列表、网格&#xff0c;还是动态生成按钮、标签等控件&#xff0c;Repeater 都能轻松胜任。 1. Repeater 组件…