生产环境Shell脚本Ping监控主机是否存活(多种方法)

简介:

在网上针对shell脚本ping监控主机是否存活的文档很多,但大多都是ping一次就决定了状态,误报率会很高,为了精确判断,ping三次不通再发告警,只要一次ping通则正常。于是,今天中午抽出点时间总结了下面脚本。

脚本功能:通过Ping命令监控主机是否存活,如果ping失败则继续ping,三次不通就认为主机宕机或网络有问题,这时就可以发送邮件告警了。

方法1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
# blog:http://lizhenliang.blog.51cto.com
  
IP_LIST= "192.168.18.1 192.168.1.1 192.168.18.2"
for  IP  in  $IP_LIST;  do
     NUM=1
     while  [ $NUM - le  3 ];  do
         if  ping  -c 1 $IP >  /dev/null then
             echo  "$IP Ping is successful."
             break
         else
             # echo "$IP Ping is failure $NUM"
             FAIL_COUNT[$NUM]=$IP
             let  NUM++
         fi
     done
     if  [ ${ #FAIL_COUNT[*]} -eq 3 ];then
         echo  "${FAIL_COUNT[1]} Ping is failure!"
         unset  FAIL_COUNT[*]
     fi
done

说明:将错误IP放到数组里面判断是否ping失败三次

方法2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# blog:http://lizhenliang.blog.51cto.com
  
IP_LIST= "192.168.18.1 192.168.1.1 192.168.18.2"
for  IP  in  $IP_LIST;  do
     FAIL_COUNT=0
     for  ((i=1;i<=3;i++));  do
         if  ping  -c 1 $IP > /dev/null then
             echo  "$IP Ping is successful."
             break
         else
             # echo "$IP Ping is failure $i"
             let  FAIL_COUNT++
         fi
     done
     if  [ $FAIL_COUNT - eq  3 ];  then
         echo  "$IP Ping is failure!"
     fi
done

说明:将错误次数放到FAIL_COUNT变量里面判断是否ping失败三次

方法3:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
# blog:http://lizhenliang.blog.51cto.com
  
ping_success_status() {
     if  ping  -c 1 $IP > /dev/null then
         echo  "$IP Ping is successful."
         continue
     fi
}
IP_LIST= "192.168.18.1 192.168.1.1 192.168.18.2"
for  IP  in  $IP_LIST;  do
     ping_success_status
     ping_success_status
     ping_success_status
     echo  "$IP Ping is failure!"
done

说明:这个个人觉得比较巧妙,利用for循环将ping通就跳出循环继续,如果不跳出就会走到打印ping失败



本文转自 李振良OK 51CTO博客,原文链接:http://blog.51cto.com/lizhenliang/1736770,如需转载请自行联系原作者

相关文章
|
10月前
|
存储 Linux Shell
在Linux中,如何使用脚本,实现判断 192.168.1.0/24 网络里,当前在线的 IP 有哪些?能ping 通则 认为在线。
在Linux中,如何使用脚本,实现判断 192.168.1.0/24 网络里,当前在线的 IP 有哪些?能ping 通则 认为在线。
|
10月前
|
监控 Linux Shell
但凡我早点知道这个Linux批量ping的脚本,也不至于现在还单身!
但凡我早点知道这个Linux批量ping的脚本,也不至于现在还单身!
236 1
|
10月前
|
网络协议 Linux 测试技术
基于PING命令的主机探测
基于PING命令的主机探测
196 3
|
10月前
|
网络协议 安全 Linux
在Linux中,当一台服务器无法ping通其他主机时,可能有哪些原因?
在Linux中,当一台服务器无法ping通其他主机时,可能有哪些原因?
|
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 ```
363 6
|
11月前
|
监控 网络安全 Perl
使用 Scapy 库编写 Ping of Death 脚本
使用 Scapy 库编写 Ping of Death 脚本
|
监控 Shell
生产环境Shell脚本Ping监控主机是否存活(多种方法)
生产环境Shell脚本Ping监控主机是否存活(多种方法)
|
监控 Shell
Shell脚本监控CPU、内存和硬盘利用率
Shell脚本监控CPU、内存和硬盘利用率
|
监控 Shell
Shell脚本监控WEB服务是否正常
Shell脚本监控WEB服务是否正常
|
监控 Shell
Shell脚本Ping监控主机是否存活并发邮件报警(三种方法)
Shell脚本Ping监控主机是否存活并发邮件报警(三种方法)