【Linux】结合Python 简易实现监控公司网站,邮件发送异常

目录

背景

实现思路

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

请求脚本

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邮件发送脚本

​
#! /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​

定时任务设置

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

 资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/81003.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

入门Echarts数据可视化:从基础到实践

目录 引言数据可视化的重要性Echarts资源与拓展 Echarts简介及开发准备什么是EchartsEcharts的特点与优势安装Echarts引入Echarts库 第一个图表使用Echarts绘制一个简单的柱状图数据准备与图表配置数据格式要求图表标题与标签设置 实践与性能优化提升图表渲染性能的技巧响应式设…

多态总结

什么是多态? 所谓多态,就是同一个操作,作用在了不同的对象上,就会有不同的解释,进而产生不同的执行结果。使用时,是采用父类指针指向子类对象的方法。其中,重载和重写是常见的实现多态的手段。…

深入理解机器学习与极大似然之间的联系

似然函数:事件A的发生含着有许多其它事件的发生。所以我就把这些其它事件发生的联合概率来作为事件A的概率,也就是似然函数。数据类型的不同(离散型和连续性)就有不同的似然函数 极大似然极大似然估计方法(Maximum Li…

sql server 删除指定字符串

replace方法 update #test set FIVCODEreplace(FIVCODE,440,) WHERE SOURCEFENTRYID140728

无数资深果粉称之为 Mac 装机必备软件的 ——CleanMyMac X

它就是被无数资深果粉称之为 Mac 装机必备软件的 ——CleanMyMac X。或许你没用过它,但是大概率你身边一定有它的资深用户,作为 MacPaw 旗下的老牌清理软件,在全球已经拥有超过 2500 万次的下载量。 它有着五大强悍的功能,可以帮…

浅谈智慧消防助力现代社会火灾防控

安科瑞 华楠 摘 要:随着我国经济水平的不断提高,科学技术取得了长足进步。科学技术的进步推动着社会不断前进,改变了各行各业的人们的生活。随着各种新型的技术尤其是人工智能技术的出现,社会进入了智能化时代。消防作为维护我们…

淘宝整店商品如何批量获取?获取淘宝店铺所有商品接口item_search_shop

在竞争日益激烈的电商行业,不少商家出于以下的考虑,想要实现一键批量获取淘宝店铺的所有商品。 竞争分析:通过获取某个店铺内的所有商品信息,可以对竞争对手的产品进行全面的了解和分析。可以了解到对手的产品种类、价格、销量等情…

【福建事业单位-资料分析】01 速算技巧-基期与现期

【福建事业单位-资料分析】01 速算技巧-基期与现期 一、速算技巧(基于选项的速算)1.1 计算类别——截位直除练习总结 二、速算技巧-比较类-分数比较2.1 一大一小(一大/一小)2.2 同大同小①分子分母都变大,保留两位直接…

LVS工作环境配置

一、LVS-DR工作模式配置 模拟环境如下: 1台客户机 1台LVS负载调度器 2台web服务器 1、环境部署 (1)LVS负载调度器 yum install -y ipvsadm # 在LVS负载调度器上进行环境安装 ifconfig ens33:200 192.168.134.200/24 # 配置LVS的VIP…

Idea配置Scala开发环境

1.首先安装scala插件: File--->Setting---->plugins,在输入框中输入scala,然后点击“Install”即可安装scala,需要稍微等待几分钟。 2 创建项目: File ---->new---->project-----Maven--->Next----输入名称(test…

力扣62.不同路径(动态规划)

/*** 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。* 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。* 问总共有多少条不同的路径? *…

Vue2源码分析-环境搭建

安装rollup 项目初始化 npm init -y安装pnpm npm i -g pnpm安装rollup以及相关插件 pnpm i rollup rollup/plugin-babel babel/core babel/preset-env --save-dev在根目录创建rollup.config.js文件,并且配置如下 import babel from "rollup/plugin-babel…

web前端之CSS操作

文章目录 一、CSS操作1.1 html元素的style属性1.2 元素节点的style属性1.3 cssText属性 二、事件2.1 事件处理程序2.1.1 html事件2.1.2 DOM0事件(适合单个事件)2.1.3 DOM2事件(适合多个事件) 2.2 事件之鼠标事件2.3 事件之Event事…

Dubbo+Zookeeper使用

说明:Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。 本文介绍Dubbo的简单使用及一些Dubbo功能特性,注册中心使用的是ZooKeeper,可在…

Idea小操作

Idea操作 idea提取内容构成一个方法 idea提取内容构成一个方法

【MATLAB第65期】基于LSTM长短期记忆网络的多输入单输出数据预测未来思路介绍(短期预测)

【MATLAB第65期】基于LSTM长短期记忆网络的多输入单输出数据预测未来思路介绍(短期预测) 往期第13期已实现多输入单输出滑动窗口回归预测 多输入单输出滑动窗口回归预测 往期第54期已实现多输入多输出滑动窗口回归预测 多输入多输出滑动窗口回归预测 一…

【uniapp 小程序开发语法篇】资源引入 | 语法介绍 | UTS 语法支持(链接格式)

博主:_LJaXi Or 東方幻想郷 专栏: uni-app | 小程序开发 开发工具:HBuilderX 小程序开发语法篇 引用组件easycom Js文件引入NPM支持 Css文件引入静态资源引入css 引入静态资源如何引入字体图标?css 引入字体图标示例nvue 引入字体…

jdk1.7与jdk1.8的HashMap区别2-底层原理区别

jdk1.7与jdk1.8的HashMap区别1-基本结构与属性对比_ycsdn10的博客-CSDN博客 一、代码区别 1.代码数:JDK1.7与JDK1.8相差了一倍的代码 2.方法数:JDK1.7是40个,JDK1.8是51个(只算基本方法) 二、Hash差别 1.JDK1.7 st…

一、 Mysql索引

一、 Mysql索引 001 Mysql如何实现的索引机制? MySQL中索引分三类:B树索引、Hash索引、全文索引 002 InnoDB索引与MyISAM索引实现的区别是什么? MyISAM的索引方式都是非聚簇的,与InnoDB包含1个聚簇索引是不同的。 在InnoDB存储引…

【云原生】详细学习Docker-Swarm部署搭建和基本使用

个人主页:征服bug-CSDN博客 kubernetes专栏:云原生_征服bug的博客-CSDN博客 目录 Docker-Swarm编排 1.概述 2.docker swarm优点 3.节点类型 4.服务和任务 5.路由网格 6.实践Docker swarm 1.概述 Docker Swarm 是 Docker 的集群管理工具。它将 Doc…