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

简介: Shell脚本Ping监控主机是否存活并发邮件报警(三种方法)

#前提已经可以通过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/Muttrc
  set charset="utf-8"           #设置发邮件编码
  set envelope_from=yes
  set 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')
do
  for ((i=1;i<=3;i++))
  do
        ping -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

wKioL1PfElyA5HJQAADQ2ss5kSI888.jpg

done

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

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

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

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


相关文章
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
65 2
6种方法打造出色的Shell脚本
|
2月前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
|
2月前
|
域名解析 弹性计算 安全
无法ping通ECS服务器公网IP的排查方法
无法ping通ECS服务器公网IP的排查方法
|
4月前
|
Shell Linux 网络安全
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
在Linux中,如何利用Shell把10台主机的当前时间写到一个文件里边?
|
4月前
|
网络协议 Linux 测试技术
基于PING命令的主机探测
基于PING命令的主机探测
104 3
|
4月前
|
网络协议 安全 Linux
在Linux中,当一台服务器无法ping通其他主机时,可能有哪些原因?
在Linux中,当一台服务器无法ping通其他主机时,可能有哪些原因?
|
7月前
|
Shell Linux 开发工具
Vmware 虚拟机挂起恢复后发现无法 Ping 通,无法连接到主机
在Linux主机上,以`root`用户停止NetworkManager服务并重启网络: ```shell systemctl stop NetworkManager systemctl restart network ``` 或修改网卡配置文件`ifcfg-ens33`,添加`NM_CONTROLLED=&quot;no&quot;`,然后重启`network`服务: ```shell vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network ```
220 6
|
7月前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
71 5
|
7月前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
60 3
|
6月前
|
Ubuntu Shell Linux
linux shell 后台执行脚本的方法 脚本后台运行 后台运行程
linux shell 后台执行脚本的方法 脚本后台运行 后台运行程
211 0

热门文章

最新文章

下一篇
DataWorks