linux检测域名证书过期并发送邮箱脚本

该博客分享了两个Python脚本,一个用于通过QQ邮箱发送邮件报警,另一个用于监测服务器域名证书的到期时间。当证书即将到期时,邮件报警脚本会发送警告通知。监测脚本读取包含待监测域名的文件,通过openssl解析证书信息,如果剩余天数少于100天,将触发邮件告警。博客还提到了需要注意的编码问题和优化建议。
摘要由CSDN通过智能技术生成

下面先分享python写的邮件报警脚本

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# 1. 首先定义好脚本中的邮箱账号和密码
# 2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
# 系统库
import sys
# 邮件发送库
import smtplib
# 格式化邮件内容
from email.mime.text import MIMEText
# 多进程包
#from subprocess import *


def sendqqmail(username, password, mailfrom, mailto, subject, content):
    try:
        # msg是一个email.mime.text.MIMEText类
        msg = MIMEText(content, _subtype='plain')
        msg['FROM'] = mailfrom
        msg['TO'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject
        # 参数:服务器地址默认为空,端口默认为0,本地主机名默认为None,超时时间为进程执行退出后超时
        smtp = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)
        # 从服务器接受debug信息的级别
        # smtp.set_debuglevel(0)
        # 默认为本地域名:localhost.com
        # smtp.ehlo()
        # 登录
        smtp.login(username, password)
        # 发送邮件
        smtp.sendmail(mailfrom, mailto, msg.as_string())
        # 关闭会话
        smtp.quit()
    except Exception as err:
        print("Send mail failed. Error: {err}".format(err=err))

def main():
    mailto = sys.argv[1]
    subject = sys.argv[2]
    content = sys.argv[3]
    # 定义邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
    sendqqmail('邮箱', '那个发邮件的验证码', '邮箱', mailto, subject, content)


if __name__ == "__main__":
    main()

检测域名证书到期脚本。

#!/bin/bash
for yuming in `cat /home/222/domain_name.txt` #读取存储了需要监测的域名的文件
do
    END_TIME=$(echo | openssl s_client -servername $yuming  -connect $yuming:443 2>/dev/null | openssl x509 -noout -dates |grep 'After'| awk -F '=' '{print $2}'| awk -F ' +' '{print $1,$2,$4 }' )
    #使用openssl获取域名的证书情况,然后获取其中的到期时间
    END_TIME1=$(date +%s -d "$END_TIME") #将日期转化为时间戳
    NOW_TIME=$(date +%s -d "$(date | awk -F ' +'  '{print $2,$3,$6}')") #将目前的日期也转化为时间戳
    
    a=$(($(($END_TIME1-$NOW_TIME))/(60*60*24))) #到期时间减去目前时间再转化为天数
        #echo ${a}
   if [ $a -lt 100 ]  #当到期时间小于100天时发邮件告警
   then   
        python 2.py songxiucheng@yzsci.cn "服务器证书过期"  "域名证书 $yuming  剩下 $a 天过期,请迅速更新"
    fi
done

这里存放域名的文件我用的是绝对路径cat /home/222/domain_name.txt,但是调用邮件脚本用的是相对路径哈,有需要的自己改就好,因为这样就已经可以达到我的目的了,所以也就没有优化什么,有兴趣的同学可以自己研究研究修改优化一下。

注:服务器的编码调成utf-8不然转换出来的证书到期时间没法做运算会报一个错误
date: 无效的日期"08月 16日 CST"
check.sh:行14: 1659542400-: 语法错误: 期待操作数 (错误符号是 “-”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值