通过Ping判断监控主机的存活

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

方法一:

说明:如果判断的机器数量不多,可以每台机器Ping三次判断

#! /bin/bash

if [ -e /tmp/c.txt ];then

rm -rf /tmp/c.txt

touch /tmp/c.txt

else

touch /tmp/c.txt

fi

if [ -e /tmp/d.txt ];then

rm -rf /tmp/d.txt

touch /tmp/d.txt

else

touch /tmp/d.txt

fi

for i in `seq 100 105`

do

ip=192.168.2.$i

ping -c 3 $ip > /dev/null 2>&1

if [ $? -eq 0 ];then

echo $ip "is on line" >> /tmp/c.txt

else

echo $ip "is offline" >> /tmp/d.txt

fi

done

方法二:

说明:将错误次数放到fail_count变量来判断是非Ping失败三次

#! /bin/bash

if [ -e /tmp/c.txt ];then

rm -rf /tmp/c.txt

touch /tmp/c.txt

else

touch /tmp/c.txt

fi

if [ -e /tmp/d.txt ];then

rm -rf /tmp/d.txt

touch /tmp/d.txt

else

touch /tmp/d.txt

fi

for i in `seq 100 105`

do

ip=192.168.2.$i

fail_count=0

for ((i=1;i<=3;i++))

do

if ping -c 1 $ip > /dev/null;then

echo "$ip is online" >> /tmp/c.txt

break

else

#echo "$ip ping is offline $i"

let fail_count++

fi

done

if [ $fail_count -eq 3 ];then

echo "$ip is offline" >> /tmp/d.txt

fi

done

方法三:

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

#! /bin/bash

if [ -e /tmp/c.txt ];then

rm -rf /tmp/c.txt

touch /tmp/c.txt

else

touch /tmp/c.txt

fi

if [ -e /tmp/d.txt ];then

rm -rf /tmp/d.txt

touch /tmp/d.txt

else

touch /tmp/d.txt

fi

for i in `seq 100 105`

do

ip=192.168.2.$i

num=1

while [ $num -le 3 ]

do

if ping -c 1 $ip > /dev/null;then

echo "$ip is online" >> /tmp/c.txt

break

else

# echo "$ip ping is offline $num"

fail_count[$num]=$ip

let num++

fi

done

if [ ${#fail_count[*]} -eq 3 ];then

echo "${fail_count[1]} is offline" >> /tmp/d.txt

fi

done

方法四:

说明:利用for循环,因为continue,如果ping通就跳出循环,,如果不跳出就会打印ping失败

#! /bin/bash

if [ -e /tmp/c.txt ];then

rm -rf /tmp/c.txt

touch /tmp/c.txt

else

touch /tmp/c.txt

fi

if [ -e /tmp/d.txt ];then

rm -rf /tmp/d.txt

touch /tmp/d.txt

else

touch /tmp/d.txt

fi

ping_success_status(){

if ping -c 1 $ip > /dev/null;then

echo "$ip is online" >> /tmp/c.txt

continue

fi

}

for i in `seq 100 105`

do

ip=192.168.2.$i

ping_success_status

ping_success_status

ping_success_status

echo "$ip is offline" >> /tmp/d.txt

done

下面这个截图,跟上面的图片有一点区别:

ifconfig |awk -F [:a-Z" "]+ ‘NR==2{print $2}‘可以获取IP地址

本文参考一下文章:

  1. http://lizhenliang.blog.51cto.com/7876557/1736770
  2. http://blog.csdn.net/zhuying_linux/article/details/6822987
  3. http://12100846.blog.51cto.com/12090846/1863259
时间: 2024-09-30 21:57:43

通过Ping判断监控主机的存活的相关文章

深入理解Java虚拟机笔记---判断对象是否存活

堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还"存活"着,哪些对象已经"死去"(即不可能再被任何途径使用的对象) 1.引用计数算法 很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1:当引用失效时,计数器减1:任何时刻计数器都为0的对象就是不可能再被使用的. 引用计数算法(Reference Counting)的实现简单,判断效率也很高,在大部分情况下它

zabbix监控主机是否存活

zabbix监控主机是否存活 1.需求分析 如果是通过agent来监控主机的话,当主机关机或者失联时,安装在客户机上的zabbix-agent是不能将信息发出来的,所以最好找一台或者多台服务器icmping来监控主机或者域名是否存活 2.配置zabbix监控项与触发器 在zabbix server主机上添加监控项 在zabbix server主机上添加触发器 3.安装fping在zabbix服务器上 当出现如下情况时,说明你的icmpping键值没有取到,应该是fping命令没有安装. 安装fp

ping判断内网地址是否存活脚本

################################################### #该脚本可以根据实际情况修改: #!/bin/bash #editor tangbo #QQ:79313760 #2015-07-22 #先定义三个变量,使用for循环来把ping成功的打印到定义的目录 UPHOSTS=/var/log/uphosts.`date +%m%d%y`      定义ping成功目录 DOWNHOSTS=/var/log/downhosts.`date +%m%d

Python监控主机是否存活并发报警邮件

利用python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟.丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理. #!/usr/bin/env python # coding:UTF-8 import time import pexpect import smtplib from email.mime.text import MIMEText mail_host = "smtp.163.com"         #定义smt

telnet判断端口与wget判断url是否存活

#判断2222端口是否存活 [[email protected] opt]# cat telnet.sh  #!/bin/bash JG=`echo -e "\n" | telnet  192.168.1.30 22 | grep Connected | wc -l` if [ "$JG" == 1 ];then         echo "0" else         echo "1" fi #判断www.baidu.co

java通过ping 判断网络是否正常

1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 6 /** 7 * 判断网络连接状况. 8 * 9 */ 10 public class NetState { 11 12 public boolean isConnect(){ 13 boolean connect = false; 1

Zabbix中使用ICMP ping来判断主机是否存活的问题

上一节配置了Simple check,现在来通过Simple check 用ICMP ping来监控充节点运行情况.Zabbix使用fping处理ICMP ping的请求,需要安装fping程序,安装完毕之后需要在zabinx_server.conf中的参数FpingLocation配置fping安装的路径.由于fping默认是root权限工作,而zabbix-server是zabbix用户运行的,所以需要对fping程序设置setuid权限,如果在自定义key的时候需要用到netstat命令,

一个简单的shell小脚本,批量ping主机ip的存活状态

#!bin/bash #ping host ip #2018年7月17日 #The shell script author xiaolong for hostip in {200..210}; #此处还可以换成 `seq 200 210`: do ip="192.168.1.$hostip" ping -c 1 -W 2 $ip &> /dev/null #/dev/null相当与是一个垃圾站,将错误信息放到里面: if [ "$?" == "

ASP.NET Core使用Ping判断网络是否接通

static void Main(string[] args) { // 主机地址 string targetHost = "bing.com"; string data = "Hello world"; Ping pingSender = new Ping(); PingOptions options = new PingOptions { DontFragment = true }; byte[] buffer = Encoding.ASCII.GetBytes