背景

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

于是主动请缨写一个自动监测的脚本,本来准备完全使用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 打开定时任务编辑器,添加下面两行

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

恢复邮件发送能力脚本

#! /bin/bash
sed -i '/\[/{s/\#\#/\&\&/g}' /home/XXX/Monitor/request.sh

【Linux】结合Python 简易实现监控公司网站,邮件发送异常的更多相关文章

  1. Python写自己主动化之邮件发送(匿名)

    为了可以实现邮件发送功能.首先.我们须要了解一下邮件的发送过程是什么样子的,此处不再具体说明,请大家自行搜索或查看p=438">http://www.sogouqa.com/?p=43 ...

  2. 知识问答网站---邮件发送失败--debug

    发送邮件失败的原因:授权码过期 注意,邮箱设置的密码是授权码,并不是自己登录的时候用的账号密码.

  3. Linux进阶之LAMP和LNMP动态网站搭建

    一.什么是LAMP LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 这些软件都是开源免费的软件,几个程序各自是独立的,经常为了达到我们需要的效果而协同工 ...

  4. Python 爬取所有51VOA网站的Learn a words文本及mp3音频

    Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...

  5. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

  6. [源码]Python简易http服务器(内网渗透大文件传输含下载命令)

    Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2 ...

  7. java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)

    java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...

  8. linux+jenkins+python+svn 自动化测试集成之路

    本文背景: 背景1---个人基础: 本机win7上安装pycharm,使用python搭建API自动化测试框架,本地运行Pass.本机上搭建jenkins,创建测试任务,定时构建Pass. 背景2-- ...

  9. 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

    本文为霍格沃兹测试学院学员学习笔记. 本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的.网络搜集(完善).工作日常讨论等,分为以下十个部分,供大家参考.如有错误的地方,欢迎 ...

随机推荐

  1. Unity3D优化技巧系列七

    笔者介绍:姜雪伟,IT公司技术合伙人.IT高级讲师,CSDN社区专家,特邀编辑.畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D ...

  2. pycharm自定义代码片段

    pycharm自定义代码片段 目录 (一)通用阶段 0 .新建.py文件模板:2 0 .pycharm中添加自定义代码片段:一图全知道:3 1 .定义类:classin              描述 ...

  3. django URL的补充 默认值 传多个参数

    url 后面还可以加上默认值 默认值 url(r'^index/', views.index, {'name': 'root'}), urls.py url对应关系 from django.conf. ...

  4. 机器学习第5周--炼数成金-----决策树,组合提升算法,bagging和adaboost,随机森林。

    决策树decision tree 什么是决策树输入:学习集输出:分类觃则(决策树) 决策树算法概述 70年代后期至80年代初期,Quinlan开发了ID3算法(迭代的二分器)Quinlan改迚了ID3 ...

  5. IOS自动化定位方式

    原文地址http://blog.csdn.net/wuyepiaoxue789/article/details/77885136 元素属性的介绍 type:元素类型,与className作用一致,如: ...

  6. centos7 离线安装docker-ce

    测试的时候,在VM中安装了一个minimal安装的centos7.因为发现在已经安装好环境的系统中,执行下面,并不会下载依赖的rpm.#下载docker-ce和其需要的依赖rpm yum instal ...

  7. CDH5离线安装简记

    需要的介质如下:CM: cloudera-manager-el6-cm5.4.3_x86_64.tar.gzCDH parcel: CDH-5.4.0-1.cdh5.4.0.p0.27-el6.par ...

  8. Linux树莓派中/etc/rc.local不执行的问题

    最近研究在树莓派中嵌入式开发java程序,并打算和Salesforce进行通信.需要开发一个java的web server,不想弄那么复杂,于是打算在linux系统中/etc/rc.local写想要执 ...

  9. 简单介绍--TOSCA自动化测试工具

    1.工具源自 TOSCA由公司Tricentis研发.这是一家来自奥地利的软件初创企业,专门帮助企业开发团队进行自动化软件测试.(百科) TOSCA的思想是,不用会编程的测试人员可以直接上手自动化. ...

  10. NC审批流开发流程

            1.新建的是数据库表结构中一定要有                          [审批人.                            制单人.             ...