下面先分享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-: 语法错误: 期待操作数 (错误符号是 “-”)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐