博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产环境Shell脚本Ping监控主机是否存活(多种方法)
阅读量:6639 次
发布时间:2019-06-25

本文共 1554 字,大约阅读时间需要 5 分钟。

在网上针对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失败

转载地址:http://eapvo.baihongyu.com/

你可能感兴趣的文章
Vue2.0总结———vue使用过程常见的一些问题
查看>>
vThunder 安装
查看>>
docker 相关文章
查看>>
ES容易忽视的集群配置
查看>>
入门系列之在Nginx配置Gzip
查看>>
Android(4.0.3+): Service, AsyncTask, 定时任务和UI通信
查看>>
团队管理-每日站会,代码审查,结对编程
查看>>
如何在UWP中统一处理不同设备间的页面回退逻辑
查看>>
关于程序的测试
查看>>
SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析
查看>>
一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)
查看>>
LeapMotion Demo1
查看>>
python项目实现配置统一管理的方法
查看>>
Spring/SpringBoot定义统一异常错误码返回
查看>>
JAVA不可变类与可变类、值传递与引用传递深入理解
查看>>
多维前缀和
查看>>
抓取12306火车信息
查看>>
Java web中WEB-INF目录理解
查看>>
[转]MS Excel VBO option missing in Blue Prism
查看>>
Java和C#差异点
查看>>