zoukankan      html  css  js  c++  java
  • 【Linux】结合Python 简易实现监控公司网站,邮件发送异常

    背景

    由于一些原因,博主负责测试的网站的服务器切换到了香港,切换后出现了多次访问超时的情况

    于是主动请缨写一个自动监测的脚本,本来准备完全使用shell来写,后来发现shell发送邮件只能在测试机之间进行,所以添加了增加了一个Python文件来完成该功能。

    实现思路

    使用Linux系统自带的定时模块crontab,设置每隔五分钟调用一次检查脚本检查服务,如果发现异常,调用Python脚本发送邮件

    邮件4小时只会发送一次,如果执行了发送邮件的脚本,就使用sed命令将对应的调用代码置为无效

    • 邮件接受人和需要监控的url都放在配置文件中,方便后续扩展。
    • 使用crontab的好处是,只要系统在运行,脚本就能正常运行。

    请求脚本

    #! /bin/bash
    #把所有标准输出重定向到到日志文件中
    exec 1>>/home/XXX/Monitor/cfg.log
    #获取配置文件中的url
    urls=`cat /home/XXX/Monitor/url.inc|grep -v '#'`
    for i in ${urls}
        do
        #获取页面返回码
        result=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${i}`
    
        #日志内容(标准输出)
        date;echo ${result};echo $i ;echo '-----------------------------'
    
        #判断数据是否异常,如果异常就调用发送邮件的脚本,
        #只发送一次邮件,如果执行了发送邮件的代码,就将该段代码置为无效
        [ "$result" = 200 ]  && `python /home/XXX/Monitor/mail_sender.py $i ${result}` && `sed -i 's/&&/##/' /home/XXX/Monitor/request.sh` 
    done

    Python邮件发送脚本

    #! /usr/bin/python
    # coding:utf-8
    import smtplib,sys
    from email.mime.text import MIMEText
    from email.header import Header
    sender = 'Bingo<XXXXXXXX@163.com>'
    #主题
    subject = 'XXX出现异常,页面访问不正常'
    #指定163邮箱服务器,用户名、密码
    smtpserver = 'smtp.163.com'
    username = 'XXXXXXXX@163.com'
    passwd = 'XXXXXX'
    #将传入参数存到变量details中
    details = sys.argv[1] + ' 异常----'+' 异常响应码 : ' + sys.argv[2]
    #获取收件人信息
    emails = open('/home/test/Monitor/email_add.inc','r')
    data = emails.readlines()
    receiver = data[1:]
    #定义发件人、收件人、主题、邮件内容等信息
    msg = MIMEText(details,'plain','utf-8')
    msg['subject'] = Header(subject,'utf-8')
    msg['From'] = 'BINGO<XXXXXXXX@163.com>'
    msg['To'] = ",".join(data[1:])
    #链接服务器、发送邮件
    smtp = smtplib.SMTP()
    smtp.connect(smtpserver)
    smtp.login(username,passwd)
    smtp.sendmail(sender,receiver,msg.as_string())
    smtp.close()

    定时任务设置

    crontab -e 打开定时任务编辑器,添加下面两行

    */5    *       *         *     *  bash /home/brenda/CFG_Monitor/request.sh  >> /home/brenda/CFG_Monitor/cfg.log
    *      */4       *         *     *  bash /home/brenda/CFG_Monitor/recover.sh  >> /home/brenda/CFG_Monitor/cfg.log

    恢复邮件发送能力脚本

    #! /bin/bash
    sed -i '/[/{s/##/&&/g}' /home/XXX/Monitor/request.sh
    文中可能存在描述不正确,欢迎园子里的大神们指正补充!
    感谢您的阅读,如果觉得对您有帮助,就在右下角点个赞吧,感谢!

    合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

  • 相关阅读:
    spring入门(八) spring mvc设置默认首页
    spring入门(七) spring mvc+mybatis+generator
    spring入门(六) spring mvc+mybatis
    spring入门(五) spring mvc+hibernate
    spring入门(四) spring mvc返回json结果
    spring入门(三) 使用spring mvc
    spring入门(二) 使用注解代替xml配置
    spring入门(一) 根据xml实例化一个对象
    idea常用技巧
    oracle系列(四)PL/SQL
  • 原文地址:https://www.cnblogs.com/Detector/p/6909441.html
Copyright © 2011-2022 走看看