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

news2024/7/6 19:46:54

目录

背景

实现思路

邮件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.coloradmin.cn/o/842086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

24届近5年重庆邮电大学自动化考研院校分析

今天给大家带来的是重庆邮电大学控制考研分析 满满干货~还不快快点赞收藏 一、重庆邮电大学 学校简介 重庆邮电大学简称"重邮",坐落于直辖市-重庆市,入选国家"中西部高校基础能力建设工程”、国家“卓越工程师教育培养计划…

使用gitee创建远程maven仓库

1. 创建一个项目作为远程仓库 2. 打包项目发布到远程仓库 id随意&#xff0c;url是打包到哪个文件夹里面 在需要打包的项目的pom中添加 <distributionManagement><repository><id>handsomehuang-maven</id><url>file:D:/workspace/java/2023/re…

【Spring Boot】(三)深入理解 Spring Boot 日志

文章目录 前言一、日志文件的作用二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式 三、自定义日志输出3.1 日志框架3.2 日志对象的获取3.3 使用日志对象打印日志 四、日志级别4.1 日志级别的作用4.2 日…

vuejs源码分析之全局API(vm.$off)

vue在初始化的时候会给vue对象本身挂载一些全局的api。今天我们一个一个来看这些api。 vm.$off方法 这个方法是用来移除自定义事件监听器。 他的用法 vm.$off(event, calback)第一个参数event取值可以是string字符串&#xff0c;也可以是Array<string>也就是说既可以删…

mysql8查看执行sql历史日志、慢sql历史日志,配置开启sql历史日志general_log、慢sql历史日志slow_query_log

0.本博客sql总结 -- 1.查看参数 -- 1.1.sql日志和慢sql日志输出方式(TABLE/FILE)。global参数 SHOW GLOBAL VARIABLES LIKE log_output; -- 1.2.sql日志开关。global参数 SHOW GLOBAL VARIABLES LIKE general_log%; -- 1.3.慢sql日志开关。global参数 SHOW GLOBAL VARIABLE…

wpf 3d 坐标系和基本三角形复习

wpf 3d 坐标系的描述见此&#xff0c; WPF 3d坐标系和基本三角形_wpf 坐标系_bcbobo21cn的博客-CSDN博客 X轴正向向右&#xff0c;Y轴正向向上&#xff1b;Z轴&#xff0c;正向是从屏幕里边出来&#xff0c;负向是往屏幕里边去&#xff1b;坐标原点是在呈现区域的中心&#x…

TestDataLake在提升测试效能方面的实践

目录 1.背景 2.预期目标 3.系统设计和实现 3.1系统功能组成 3.2 数据智能生成 3.3 接口遍历测试 4.应用效果和收益 5.后续规划 1.背景 随着软件开发的迅速发展&#xff0c;测试数据管理变得越来越复杂。手动创建测试数据需要耗费大量时间和精力&#xff0c;同时容易出…

bigemap用于自然资源调查规划设计院

获取途径&#xff1a;之前看到别人使用我们软件&#xff0c;然后去我们官网下载地图体验了一下&#xff0c;想试试。买单点&#xff1a;影像清晰&#xff0c;最主要是使用手机端&#xff0c;跑外业&#xff0c;定位&#xff0c;记录轨迹&#xff0c;拍照&#xff0c;等高线制作…

网络安全进阶学习第十三课——SQL注入Bypass姿势

文章目录 一、等号被过滤二、substr、mid等被过滤三、逗号被过滤四、and/or被过滤五、空格被过滤五、其他绕过方式 一、等号被过滤 1、like&#xff0c;rlike语句&#xff0c;其中rlike是正则2、大于号>&#xff0c;小于号<3、符号<>&#xff1a;<>为不等于…

认识 spring AOP (面向切面编程) - springboot

前言 本篇介绍什么是spring AOP, AOP的优点&#xff0c;使用场景&#xff0c;spring AOP的组成&#xff0c;简单实现AOP 并 了解它的通知&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 什么是s…

Automa-通过连接块来自动化你的浏览器

1、前言 通过浏览器插件可实现自动化脚本的录制与编写&#xff0c;具有代表性的工具就是&#xff1a;Selenium IDE、Katalon Recorder&#xff0c;对于简单的业务来说可快速实现自动化的上手工作。 Selenium IDE Katalon Recorder 如果你想学习接口自动化测试&#xff0c;我这…

1990-2021年31省数字经济测算指标(20多个指标)

1990-2021年31省数字经济测算指标&#xff08;20多个指标&#xff09; 1、来源&#xff1a;国家统计局 2、时间&#xff1a;1990-2021年 3、范围&#xff1a;31省 4、指标&#xff1a; 地区、年份、邮电业务总量、邮政业务总量、电信业务总量、函件数(亿件)、包裹数(万件)、…

selenium常用API的使用

目录 定位元素&#xff08;findElement&#xff09; CSS选择器定位 xpath选择器定位 CSS选择器和xpath选择器区别 操作测试对象 click&#xff1a;点击 sendKeys&#xff1a;输入文本框内容 clear&#xff1a;清除文本框内容 text&#xff1a;获取元素文本内容 …

JVM之类加载与字节码(二)

3. 编译期处理 什么是语法糖 所谓的 语法糖 &#xff0c;其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中&#xff0c;自动生成 和转换的一些代码&#xff0c;主要是为了减轻程序员的负担&#xff0c;算是 java 编译器给我们的一个额外福利&#xff08;给…

看跨境电商世界区域分布,Live Market教你深入参与跨境创业

随着全球化发展带来互联网技术的进步和平台经济的触角伸向全球&#xff0c;跨境电商越来越成为全球贸易的重要组成部分。根据国际数据公司&#xff08;IDC&#xff09;的最新数据显示&#xff0c;全球前五大跨境电商平台分别是亚马逊、阿里巴巴、eBay、Wish和京东全球购。这五家…

【Linux】内核线程创建 kthread_run 函数和内核中断

kthread_run函数详解 以PCIE的热插拔内核线程创建为例说明 注意&#xff1a;内核线程和RTOS的线程略有不同&#xff0c;这里Linux上创建以后直接运行&#xff0c;RTOS上有的是需要加入到调度队列中后才会执行&#xff0c;比如RT-Thread的系统 kthread_run 是 Linux 内核中的…

人类与机器的分类不同

分类能力也是智能的重要标识之一。通过分类&#xff0c;我们可以将事物或概念进行归类和组织&#xff0c;从而更好地理解和处理信息。分类在人类认知和智能发展中起到了重要的作用&#xff0c;它有助于我们对世界进行认知、记忆、推理和决策。在机器智能领域&#xff0c;分类同…

企业服务器器中了360后缀勒索病毒怎么解决,勒索病毒解密数据恢复

随着网络威胁的增加&#xff0c;企业服务器成为黑客攻击的目标之一。近期&#xff0c;上海某知名律师事务所的数据库遭到了360后缀的勒索病毒攻击&#xff0c;导致企业服务器内的数据库被360后缀勒索病毒加密。许多重要的数据被锁定无法正常读取&#xff0c;严重影响了企业的正…

基于STM32CUBEMX驱动低压步进器电机驱动器STSPIN220(2)----驱动STSPIN220

基于STM32CUBEMX驱动低压步进器电机驱动器STSPIN220----2.驱动STSPIN220 套件概述样品申请STSPIN220描述STSPIN220所有功能基础配置REF电流配置细分配置IO配置定时器配置初始化mode 套件概述 本文档的目标是提供关于使用STM32CubeMX驱动低压步进电机驱动器STSPIN220的详尽信息…

vue2中使用mock数据发送请求

1.安装 npm i mockjs1.1 2.准备json数据 说明&#xff1a;mock数据需要的图片放置到public文件夹中&#xff08;原封不动的打包到dist文件夹&#xff09; [{"id": "1","imgUrl": "/images/banner1.jpg"},{"id": "2&qu…