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

这篇具有很好参考价值的文章主要介绍了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循环数组中的ip
  do
  	 #ping -c 1 $ip &>/dev/null 可监控ip,我这里改为监控端口号了
     nc -nzv 8.8.8.8 8888 &>/dev/null
     a=$?
     sleep 2
     nc -nzv 8.8.8.8 8888 &>/dev/null
     b=$?
     sleep 2
     nc -nzv 8.8.8.8 8888 &>/dev/null
     c=$?                                     #三次循环中有一次ping通及通
     sleep 2
     DATE=$(date +%F" "%H:%M)
     if [ $a -ne 0 -a $b -ne 0 -a $c -ne 0 ];then
         echo -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.log
     else
         echo "$ip ping is successful."
     fi
done
if [ -s /log/Ping/${Date}_ping_server.log ];then
  echo "不为空,发送邮件"
  /usr/bin/mail -s " Server Status " *********@qq.com  < /log/Ping/${Date}_ping_server.log
  while true    #死循环,尝试连接,直到ping通并发送成功邮件才退出循环
  do
     nc -nzv 8.8.8.8 8888&>/dev/null
     a=$?
     sleep 100
     echo "正在尝试连接..."
     if [ $a -eq 0 ];then
         echo "Ping is successful"
         /usr/bin/mail -s " Server Status " ********@qq.com  < /log/Ping/ping_server/ping_success.log   #发送成功邮件,在此log文件中写入成功消息
         break
     fi
  done
else
  echo "为空,不发送邮件"
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 ];then
   echo $a
   echo "进程不在运行中,进程启动!"
   sh 上面的shell文件.sh
elif [ $a -ge 2 ];then
   echo $a
   echo "进程运行中!"
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 方式文章来源地址https://www.toymoban.com/news/detail-685782.html

到了这里,关于shell脚本监控ip和端口的运行状态并触发邮件告警的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本利用telnet命令批量测试IP和端口的连通性

    IP和端用写在一个文件里面,每行一个IP+端口,中间和冒号分隔,如下的方式: 192.168.1.1:80 192.168.1.2:8080 ...... 脚本如下:

    2024年02月04日
    浏览(52)
  • 一个简单的监控web服务的shell脚本

    监控说明: 应用场景:监控web服务器状态,异常时邮件报警。 脚本说明:通过wget(也可以用curl)监控服务器状态,如果不能正常访问,ping检测网络,网络正 常通知管理员检查服务,ping不通邮件通知管理员。 服务器列表使用数组,服务器状态函数使用返回值判断服务器是

    2023年04月13日
    浏览(34)
  • Linux 主机磁盘繁忙度监控实战shell脚本

    Linux 磁盘繁忙度是指磁盘的使用率和活动水平。可以通过一些工具来监测磁盘繁忙度,如 iostat、iotop、sar 等。 其中,iostat 是一个常用的工具,可以提供关于磁盘活动的详细统计信息。通过运行命令 iostat -x 1 可以实时监测磁盘的使用情况,其中 %util 列就表示磁盘的繁忙度,

    2024年02月10日
    浏览(36)
  • shell脚本查询脚本否在运行

    可以使用 ps 命令来查询脚本是否正在运行。例如,要查询名为 script.sh 的脚本是否正在运行,可以使用以下命令: 如果脚本正在运行,则 grep 命令会输出包含脚本名称的行;如果脚本没有运行,则不会有输出。 注意:如果有多个脚本正在运行,且脚本名称中包含了 script.sh

    2024年02月06日
    浏览(42)
  • Shell 脚本实现自动启动程序、日志管理和定时任务监控

    本篇将通过Shell 脚本实现自动启动Java程序、日志管理和定时任务监控。脚本启动程序具灵活定制、可移植性和扩展性强的优点,可以根据需要添加额外的功能、配置选项和自定义行为,从而满足更具体的要求。 确保将脚本中的/path/to/log和your_program_port等替换为实际的日志路径

    2024年01月21日
    浏览(43)
  • shell脚本:监控cpu,内存,磁盘,IO,带宽,阈值告警

    一.shell脚本监控内存和磁盘的使用率,设置阈值,并通过邮件告警 二.shell脚本监控内存,磁盘,带宽,io,cpu的使用率,设置阈值进行微信告警

    2024年02月04日
    浏览(44)
  • android 运行shell 脚本文件或shell命令

    android 运行shell 脚本文件或shell命令 一.运行shell脚本文件 1.test.sh文件内容 #!/bin/bash echo \\\"I am a script\\\" ps 2.将shell文件拷贝到Android设备目录 3.执行脚本文件 Runtime.getRuntime().exec(\\\"sh /sdcard/lilei/test.sh\\\"); 注: 应用需要有存储访问权限,如果shell文件中有文件访问请用绝对路径,否则访问

    2024年03月12日
    浏览(60)
  • 安卓系统开机运行shell脚本

    在安卓系统上很多业务需求是通过shell脚本实现的,开机自启动一般做法是创建安卓service服务,然后通过该服务调用执行shell脚本。详细步骤: 如下shell脚本功能为:循环查询系统下是否有厂商ID为0x1A86的USB转串口设备匹配到了CDC-ACM驱动上,若是则解绑USB设备和CDC-ACM驱动的绑

    2024年02月08日
    浏览(50)
  • SHELL的脚本编辑与运行

    目录 1.编写脚本for1.sh,使用for循环创建20账户,账户名前缀由用户从键盘输入,账户初始密码由用户输入,例如:test1、test2、test3、、test10 a.编辑脚本 b.运行脚本 c.进行检验 2.编写脚本for2.sh,使用for循环,通过pig命令测试网段的主机连通性,网段前3段由用户输入,如:输入19

    2023年04月26日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包