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

本文共 1633 字,大约阅读时间需要 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失败

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

你可能感兴趣的文章
Deep Residual Learning for Image Recognition(MSRA-深度残差学习)
查看>>
SSH的各个配置文件:
查看>>
tomcat端口被占用
查看>>
web框架
查看>>
2017工作总结
查看>>
ios 容错处理JKDataHelper和AvoidCrash
查看>>
导出toolStrip1中的图标
查看>>
ASP.NET Core -中间件(Middleware)使用
查看>>
占有优先量词
查看>>
软件包管理 之 file.src.rpm 使用方法的简单介绍
查看>>
[Tool]靜態程式碼分析-FxCop
查看>>
URAL 1055 Combinations
查看>>
小白学数据分析----->聚类分析理论之K-means理论篇
查看>>
Spark SQL Catalyst源代码分析之TreeNode Library
查看>>
怎样学好C语言,一个成功人士的心得!
查看>>
linux 内核经典面试题
查看>>
ThinkPhp学习13
查看>>
小白学数据分析----->Excel制作INFOGRAPHIC
查看>>
Silverlight Telerik RadGridView动态增删行及行列操作(转载)
查看>>
Html.DropDownListFor练习(2)
查看>>