【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 打开定时任务编辑器,添加下面两行
- */ * * * * 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 简易实现监控公司网站,邮件发送异常的更多相关文章
- Python写自己主动化之邮件发送(匿名)
为了可以实现邮件发送功能.首先.我们须要了解一下邮件的发送过程是什么样子的,此处不再具体说明,请大家自行搜索或查看p=438">http://www.sogouqa.com/?p=43 ...
- 知识问答网站---邮件发送失败--debug
发送邮件失败的原因:授权码过期 注意,邮箱设置的密码是授权码,并不是自己登录的时候用的账号密码.
- Linux进阶之LAMP和LNMP动态网站搭建
一.什么是LAMP LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 这些软件都是开源免费的软件,几个程序各自是独立的,经常为了达到我们需要的效果而协同工 ...
- Python 爬取所有51VOA网站的Learn a words文本及mp3音频
Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...
- 《Unix/Linux日志分析与流量监控》书稿完成
<Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...
- [源码]Python简易http服务器(内网渗透大文件传输含下载命令)
Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2 ...
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)
java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...
- linux+jenkins+python+svn 自动化测试集成之路
本文背景: 背景1---个人基础: 本机win7上安装pycharm,使用python搭建API自动化测试框架,本地运行Pass.本机上搭建jenkins,创建测试任务,定时构建Pass. 背景2-- ...
- 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)
本文为霍格沃兹测试学院学员学习笔记. 本系列文章总结归纳了一些软件测试工程师常见的面试题,主要来源于个人面试遇到的.网络搜集(完善).工作日常讨论等,分为以下十个部分,供大家参考.如有错误的地方,欢迎 ...
随机推荐
- Java中的哈夫曼树
package com.ietree.basic.datastructure.tree; import java.util.ArrayDeque; import java.util.ArrayList ...
- matplotlib对LaTeX数学公式的支持
Matlplotlib对LaTeX有一定的支持,如果记得使用raw字符串语法会很自然: xlabel(r"x2y4x2y4") 在matplotlib里面,可以使用LaTex的命令 ...
- java通过URL获取文本内容
原文地址https://www.cnblogs.com/myadmin/p/7634262.html public static String readFileByUrl(String urlStr) ...
- Flask form(登录,注册)
用户登录 from flask import Flask, render_template, request, redirect from wtforms import Form from wtfor ...
- exec-maven-plugin配置及使用
背景: 如果你想在项maven生命周期内,运行一段java代码,或者一段独立的程序,或者说我们所指的预执行,初始化某些值,生成某些不能预先生成的文件.那么这样我们就可以使用exec-maven-plu ...
- XVII Open Cup named after E.V. Pankratiev Grand Prix of Moscow Workshops, Sunday, April 23, 2017 Problem K. Piecemaking
题目:Problem K. PiecemakingInput file: standard inputOutput file: standard outputTime limit: 1 secondM ...
- 通过存储过程创建SQL作业
USE dbNameGO/****** Object: StoredProcedure [dbo].[usp_Createjob] Script Date: 03/26/2014 14:36:30 * ...
- TOSCA自动化测试工具--怎么写自动化用例
1.查看一下要测试的对象属性 2.
- 带你走进ajax(4)
处理ajax返回数据类型 ajax返回数据类型:纯文本格式.xml.json 如果只获取简单的字符串可以采用纯文本格式. 如果返回的数据类型比较复杂,则采用xml或者json. 采用XML来处理数据 ...
- C#数组的Map、Filter、Reduce操作
在Javascript.Python等语言里,Map.Filter和Reduce是数组的常用方法,可以让你在实现一些数组操作时告别循环,具有很高的实用价值.它们三个的意义大家应该都清楚,有一个十分形象 ...