shell脚本监控ip和端口的运行状态并触发邮件告警

ping端口shell代码
ping不通发邮件通知
直到ping通再次发送成功邮件

#!/bin/bash
Date=`date -d "today" +"%Y-%m-%dT%H-%M-%S"`
#echo "根据当前时间创建日志文件"
mkdir -p /log/Ping/ping_server
touch /log/Ping/${Date}_ping_server.log
ip_list="8.8.8.8"  #可监控多个ip,空格隔开
for ip in ${ip_list}  #for循环数组中的ipdo#ping -c 1 $ip &>/dev/null 可监控ip,我这里改为监控端口号了nc -nzv 8.8.8.8 8888 &>/dev/nulla=$?sleep 2nc -nzv 8.8.8.8 8888 &>/dev/nullb=$?sleep 2nc -nzv 8.8.8.8 8888 &>/dev/nullc=$?                                     #三次循环中有一次ping通及通sleep 2DATE=$(date +%F" "%H:%M)if [ $a -ne 0 -a $b -ne 0 -a $c -ne 0 ];thenecho -e "Date : $DATE\nHost : $ip\nProblem : Ping is failed."echo -e "Date : $DATE\nHost : $ip\nProblem : Ping is failed 该服务器8888端口运行状态异常,请及时排查" >> /log/Ping/${Date}_ping_server.logelseecho "$ip ping is successful."fi
done
if [ -s /log/Ping/${Date}_ping_server.log ];thenecho "不为空,发送邮件"/usr/bin/mail -s " Server Status " *********@qq.com  < /log/Ping/${Date}_ping_server.logwhile true    #死循环,尝试连接,直到ping通并发送成功邮件才退出循环donc -nzv 8.8.8.8 8888&>/dev/nulla=$?sleep 100echo "正在尝试连接..."if [ $a -eq 0 ];thenecho "Ping is successful"/usr/bin/mail -s " Server Status " ********@qq.com  < /log/Ping/ping_server/ping_success.log   #发送成功邮件,在此log文件中写入成功消息breakfidone
elseecho "为空,不发送邮件"
fi
find /log/Ping/ -mtime +1 -exec rm -rf {} \;  #删除之前的log文件

避免加入定时任务重复执行,须执行完本次才能继续下次,所以把上面代码加入下面代码中,在定时任务中执行下面代码判断代码是否在运行

#!/bin/bash
a=`ps -ef | grep 上面的shell文件.sh | wc -l`
echo $a
if [ $a -eq 1 ];thenecho $aecho "进程不在运行中,进程启动!"sh 上面的shell文件.sh
elif [ $a -ge 2 ];thenecho $aecho "进程运行中!"
fi

定时任务配置

十分钟执行一次

crontab -e
*/10 * * * * sh /路径/echo.sh

定时任务相关命令

crontab -l 查看定时命令
service crond start      #启动服务
service crond stop       #关闭服务
service crond restart    #重启服务
service crond reload     #重新载入配置
service crond status     #查看crontab服务状态

配置Linux邮件

安装邮件客户端

yum -y install sendmail
yum -y install mailx

配置邮件mail.rc
路径 etc/mail.rc
在文件末尾加入下面代码

set from=***********@163.com
set smtp-auth-user=*************@163.com
set smtp=smtp.163.com
set smtp-auth-password=UG***********ECPV
set stmp-auth=login

参数说明
from: 对方收到邮件时显示的发件人
smtp: 指定第三方发送邮件的 smtp 服务器地址
smtp-auth-user: 第三方发邮件的用户名
smtp-auth-password: 邮箱授权码
smtp-auth: SMTP 的认证方式。默认是 LOGIN,也可改为 CRAM-MD5 或 PLAIN 方式

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

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

相关文章

shell常用脚本

1、Java项目重启脚本 #!/bin/bash# 定义一个函数来结束进程和启动新进程 function restart(){JAR_NAME$1 # jar包LOG_NAME$2 # 日志JVM_ARGS$3 # jvm 参数PID$(ps -ef | grep java | grep ${JAR_NAME} | awk { print $2 })if [[ ! -z "$PID" ]]; thenecho "…

js--记录

js循环对象顺序错乱 // for (var key in produce) {// dateList.push(key)// arr1.push(produce[key])// }// for (var key in rate) {// arr2.push((rate[key]) * 100)// }// console.log(dateList);Object.keys(produce).sort().forEach(item > {console.log(item, …

postgresql-字符函数

postgresql-字符函数 字符串连接字符与编码字符串长度大小写转换子串查找与替换截断与填充字符串格式化MD5 值字符串拆分字符串反转 字符串连接 concat(str, …)函数用于连接字符串&#xff0c;并且忽略其中的 NULL 参数&#xff1b;concat_ws(sep, str, …) 函数使用指定分隔…

【黑科技】游戏开发程序员必备工具【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;效率…

vue3 05-语法糖以及小案例

setup语法糖 srcipt setup的标签中,属性数据和函数,模板可以直接使用 这是setup语法糖 <template><div> </div> </template> <script setup></script>怎么使用这个setup函数的语法糖(小案例) <template><div><p>set…

递归算法学习——子集

目录 一&#xff0c;题目解析 二&#xff0c;例子 三&#xff0c;题目接口 四&#xff0c;解题思路以及代码 1.完全深度搜索 2.广度搜索加上深度优先搜索 五&#xff0c;相似题 1.题目 2.题目接口 3.解题代码 一&#xff0c;题目解析 给你一个整数数组 nums &#xff0c…

软件开发的201个原则 阅读笔记 第172-201个原则

目录 原则172 做项目总结 第8章 产品保证原则 原则173 产品保证并不是奢侈品 原则 174 尽早建立软件配置管理过程 原则175 使软件配置管理适应软件过程 原则176 组织SCM 独立于项目管理 原则 177 轮换人员到产品保证组织 给所有中间产品一个名称和版本 原则179 控制基准 原则…

学习JAVA打卡第四十五天

StringBuffer类 StringBuffer对象 String对象的字符序列是不可修改的&#xff0c;也就是说&#xff0c;String对象的字符序列的字符不能被修改、删除&#xff0c;即String对象的实体是不可以再发生变化&#xff0c;例如&#xff1a;对于 StringBuffer有三个构造方法&#xff…

C++ 存储类

C 存储类 存储类定义 C 程序中变量/函数的范围&#xff08;可见性&#xff09;和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C 程序中可用的存储类&#xff1a; autoregisterstaticexternmutablethread_local (C11) 从 C 17 开始&#xff0c;auto 关键字不再…

Android静态ip设置的坑

Android静态ip设置的坑 Android静态ip设置&#xff0c;对于这个功能&#xff0c;如果没有接触过&#xff0c;会给人感觉是个特别简单的功能&#xff0c;直接调用系统的接口即可&#xff0c;其实这个功能还是有许多坑的&#xff0c;因为谷歌在Android SDK中对相关的API进行非系…

PHP敬老院管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 敬老院管理系统&#xff08;养老&#xff09;是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 论文 https://download.csdn.net/download/qq_41221322/…

范德波尔方程详细介绍与Python实现(附说明)

引言: 在研究真空管放大器的过程中,写下了一个振动微分方程。当时人们并没有混沌或是对初始条件敏感的概念。不过,当混沌理论有一定发展后,人们重新回顾这个方程时发现它其实是个混沌方程。当时,范德波尔在 Nature 杂志报告了基于这个微分方程的霓虹灯实验,发现当驱动信号…

财务部发布《企业数据资源相关会计处理暂行规定》

导读 财务部为规范企业数据资源相关会计处理&#xff0c;强化相关会计信息披露&#xff0c;根据《中华人民共和国会计法》和相关企业会计准则&#xff0c;制定了《企业数据资源相关会计处理暂行规定》。 加gzh“大数据食铁兽”&#xff0c;回复“20230828”获取材料完整版 来…

adb 命令

1.adb shell dumpsys activity top | find "ACTIVITY" 查看当前运行的activity包名 2.adb shell am start -n 包名/页面名 打开应用的页面 3.查看将要启动或退出app的包名 adb shell am monitor 只有在启动或退出的时候才会打印 4.查看当前启动应用的包名 ad…

工单管理报修系统有什么用?的修工单系统助您解决报修难点

随着互联网的快速发展&#xff0c;许多企业都开始使用“的修”工单管理系统&#xff0c;这是一款企业管理软件&#xff0c;可以帮助管理员用户针对不同的机构、单位以及外部客户的需求来选择性地管理、维护及追踪各种各样的问题和请求&#xff0c;也可用作公司内部员工工作上的…

人员闯入检测告警算法

人员闯入检测告警算法通过yolov5网络模型识别检测算法&#xff0c;人员闯入检测告警算法对未经许可或非法进入的人员进行及时识别告警&#xff0c;确保对危险区域的安全管理和保护。YOLO系列算法是一类典型的one-stage目标检测算法&#xff0c;其利用anchor box将分类与目标定位…

SSM - Springboot - MyBatis-Plus 全栈体系(二)

第一章 Maven 三、Maven 核心功能依赖和构建管理 1. 依赖管理和配置 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题&#xff0c;使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程…

【Docker】01-Centos安装、简单使用

参考教程&#xff1a; https://www.bilibili.com/video/BV1Qa4y1t7YH/?p5&spm_id_frompageDriver&vd_source4964ba5015a16eb57d0ac13401b0fe77 什么是Docker&#xff1f; Docker是一种开源的容器化平台&#xff0c;用于构建、打包、部署和运行应用程序。它通过使用容…

Java面向对象

目录 1. 对象简介 2. this关键字 3. 构造器&#xff08;构造方法&#xff09; 4. 封装性 5. 实体类JavaBean 6. 静态&#xff08;static&#xff09; 7. 工具类 8. 继承 9. 权限修饰符 10. 方法重写 11. this和super的用法总结&#xff1a; 12. 多态 13. final关键…

Midjourney学习(二)参数的基础

prompt的组成 prompt 可以由三部分组成&#xff0c; 第一部分是垫图部分&#xff0c;也就是一张网络图片 第二部分是文本描述内容 第三部分则是参数 参数列表 --aspect <value> 或者 --ar <value> 控制画面的比例&#xff0c;横竖比例 --version <value> -…