ping检测整个网段地址在线

shell编写简单ping检测脚本,判断某个网段ip地址在线状态。其中存在部分设备可能未开启ping规则,无法ping通,故通过ping命令并不能准确判断出主机在线状态,需要配合其他检测方式进行检测判断。

vi simple-ping.sh
#!/bin/bash

#YX
#2020.06.29
#simple ping
  for i in {1..255}
  do
  if ping -c 2 -w 1 172.168.1.$i &>/dev/null
  then
      echo "172.168.1.$i is up"
  else
      echo "172.168.1.$i is down"
  fi
done

注:

(1)ping -c 2 -w 1 172.168.1.$i &> /dev/null

(2)ping -c 2 -w 1 172.168.1.$i > /dev/null 2>&1

其中(1)与(2)等价,(1)为正常输出,将执行结果不论对错,全部放入/dev/null;

(2)中2>&1,意思是将标准错误像正常输出一样输出。

ping常用参数说明:

-c count:指定ping检测次数;

-w deadline:设定检测时间为秒,不管能否通,达到限制时间就结束ping过程;

-I interface:指定网络接口或者本机地址发出数据包;

-t ttl :设置TTL(Time To Live)为指定的值,该字段指定IP包被路由器丢弃之前允许通过的最大网段数;

-s packetsize:指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节。包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500);

-W timeout:等待回复的时间,单位是毫秒。这个选项只在没有接到任何的回复的情况下有效,只要接到了一个回复,就将等待时间设置为两倍的RTT。如果没有设置,则等待时间设置为一个最大值;

-q:静默模式,这种模式下,除了开始的提示和结束的数据统计,不输出任何信息。

你可能感兴趣的:(Linux基础)