#前提已经可以通过mail或mutt客户端发邮件

1.先安装sendmail来发邮件

  # yum -y install sendmail# /etc/init.d/sendmail start# chkconfig sendmail on

2.再安装邮件客户端

   # yum -y install mutt

2.1 为了更好在邮件中显示,设置mutt客户端发送信息

  # vim /etc/Muttrcset charset="utf-8"           #设置发邮件编码set envelope_from=yesset rfc2047_parameters=yes    #解决附件乱码问题set realname="报警"           #发件人别名set use_from=yes              #指定是否显示别名set from=monitor@test.com     #发送人地址

方法1、通过加失败计数器来判断(误报率低)

#!/bin/bash
DATE=`date +%F" "%H:%M`
IP=/root/monitor/ip.txt     #ip地址表
MAIL=zhenliang369@163.com
for ip in $(cat $IP | sed '/^#/d')
dofor ((i=1;i<=3;i++))doping -c 1 $ip &>/dev/null[ $? -ne 0 ] && let FailCount+=1;done
done
[ -z $FailCount ] && FailCount=0  #当ping都正常时,FailCount值为空,就设置FailCount值为0,用整数比较
if [ $FailCount -eq 2 ];then#echo "$IP ping is failed."echo -e "Date : $DATE\nHost : $ip\nProblem : Ping is failed, Please check ! ! !" | mutt -s "Ping Monitor" $MAIL
fi

#添加任务计划

# crontab -e

*/1 * * * * /root/monitor/ping.sh

done

方法二、通过ping一个包的状态判断(误报率低,建议此方法)

#!/bin/bash
MAIL="baojingtongzhi@163.com huangxiaohong@loongtao.com"
for ip in $(cat ip_list|sed "/^#/d")    #ip_list是当前目录下IP表doping -c 1 $ip &>/dev/null            #三个ping有一个能通,说明服务器正常a=$?sleep 2ping -c 1 $ip &>/dev/nullb=$?sleep 2ping -c 1 $ip &>/dev/nullc=$?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." | mail -s "Ping $ip failed From 255.252" $MAIL#else#    echo "$ip ping is successful."fi
done

方法三、通过丢包率来判断是否正常(误报率高)

#!/bin/bash
while true
doDATE=`date +%F" "%H:%M`MAIL="zhenliang369@163.com"for ip in $(cat ip_list|sed "/^#/d")       #ip_list是当前目录下IP表 donum=$(ping -c 2 $ip |grep "100% packet loss" |wc -l)    if [ $num == 1 ];thenecho -e "Date : $DATE\nHost : $i\nProblem : Ping is failed." | mail -s "Ping $i failed From 255.252" $MAILfidone
sleep 30
done

Shell脚本Ping监控主机是否存活并发邮件报警(三种方法)相关推荐

  1. 【Shell脚本】正确认识通过sh、./和source三种方式运行shell脚本的区别并据此定义和使用shell库函数

    文章目录 1. 从代码块到函数 2. 从函数到函数库 3. 定义 shell 函数库 4. 使用 shell 函数库 1. 从代码块到函数 在一个 shell 脚本中,你可以通过将具有独立功能的代码块 ...

  2. Shell 脚本调用另一个脚本的三种方法

    文章目录 1.source 2.点号. 3.sh 命令 4.三者的区别 5.export 命令设置临时环境变量 6.export 命令设置永久环境变量 参考文献 假如有脚本 first.sh: #!/ ...

  3. shell脚本执行时报“bad interpreter: Text file busy“的解决方法

    shell脚本执行时报"bad interpreter: Text file busy"的解决方法 参考文章: (1)shell脚本执行时报"bad interprete ...

  4. linux 循环 cpu使用率脚本,监控CPU使用率的三种方法(shell脚本)

    监控CPU使用率的三种方法(shell脚本),供大家学习参考. 方法一: 复制代码 代码如下: #!/bin/sh #监控CPU使用率 #Written by Chameleon #Http://ch ...

  5. linux下logcat命令,Android shell命令行中过滤adb logcat输出的几种方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb lo ...

  6. RedHat 7.0及CentOS 7.0禁止Ping的三种方法

    作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=538 前言: "Ping"属于ICMP协议(即"Internet控制报文协议") ...

  7. java7 javascript引擎_Java7中脚本引擎的一般用法,共三种方法获得JavaScript引擎:名称、文件扩展名、MIME类型 | 学步园...

    package com.sino.java7; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; i ...

  8. python脚本判断一个数是否为素数的几种方法

    质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.素数在数论中有着很重要的地位.比1大但不是素数的数称为合数.1和0既非素数也非合数.质数是与合数相对立的两个概念 ...

  9. 网络监控cacti1.2.12邮件报警(三)

    网络监控cacti1.2.12邮件报警(三) 网络监控cacti1.2.12安装部署(一) 网络监控cacti1.2.12监控配置(二) 网络监控cacti1.2.12邮件报警(三) 网络监控cact ...

最新文章

  1. EKF优化:协方差coff公式、意义、SLAM中的Code优化
  2. java me基础教程 pdf_Java ME手机应用开发技术与案例详解 PDF
  3. linux缩小lv发生文件系统错误
  4. 终端执行php,PHP命令行执行PHP脚本的注意事项总结
  5. Unity2018新功能抢鲜 | C# Job System Ⅱ
  6. 103.及时清除缓存
  7. hive 中String对长度没有限制
  8. stm32串口c语言程序,STM32串口通信-代码实现
  9. java成语填充,java - 什么是“执行”这个成语?
  10. 【EXLIBRIS】关于我现有的大部分PDF书目以及共享
  11. 基于深度学习技术的AI输入法引擎
  12. kubernetes 网络组件 calico 运行原理分析
  13. 控制台调出Servers
  14. 为什么那么多程序员害怕Python?
  15. easyrecovery2023电脑文件数据恢复软件功能介绍
  16. 百度自动驾驶巴士开启收费运营
  17. 网赚项目之站群第四课站群的文章采集与伪原创
  18. 如何压缩ppt文件大小?
  19. 百度网盘高速下载器提示:高速受限!建议重新注册网盘账号使用
  20. 2022微软暑期实习笔试

热门文章

  1. js for循环 ajax
  2. WPF中使用Hashtable剔除重复字符串(比如电话号码)
  3. mysql-视图、触发器、事务、存储过程、流程控制
  4. JavaScript Date 对象
  5. Delphi 2007体验!
  6. phpinfo信息泄漏
  7. ELF文件格式与进程地址空间的联系
  8. linux下shell命令trap
  9. Spring MVC使用拦截器实现权限控制
  10. 您可能不知道的ASP.Net小技巧