快速高效测试主机连通性

通常我们为了测试一个主机是否在线,都会使用ping命令去测试,然而人为的去ping数量过多的机器操作很繁琐,而且需要的等待时间过长,今天我就为大家介绍两种快速测试主机是否在线的方法,希望能给大家带来一些启发。

一、使用脚本循环ping测试

#!/bin/bash
#Author  xiaoY
#高并发的连通性测试
#ping命令的-c选项控制ping测试的次数,-c2表示对目标主机执行2次ping测试
#ping命令的-i选项,控制多次ping测试的间隔时间默认为1秒,-i0.1可以提升ping的测试效率
#ping命令的-W选项,可以控制超时时间,默认一个主机无法ping通,需要等很长的超时时间,才会提示无法ping通,使用-W1,设置超时时间为1秒。
myping(){
ping -c4 -i0.1 -W1  192.168.4.$i  &> /dev/null
if [ $? -ne 0 ];then
  echo  $i,  >> up.txt
else
  echo  $i,  >> down.txt
fi
}

#定义变量i控制循环次数,i从1开始循环,每循环一次,i自加1,直到i等于254循环退出
#在每次循环中对一个IP进行ping测试,如果ping通,将主机号存入UP.txt,如果无法ping通,则将主机号存入down.txt
#在进入循环之前,初始化文件
i=1
>up.txt
>down.txt
while [ $i -lt 255 ]
do
  myping &
  let i++
done
#使用&符号,将执行的函数放入后台执行
#这样做的好处是不需要等待ping第一台主机的回应,就可以继续并发ping第二台主机,依次类推。

#设置等待,完成ping测试写入
#sort排序调整格式
sleep 2
echo  "不在线的主机:"
echo -n  `sort -n up.txt `
echo
echo  "在线的主机:"
echo -n `sort -n down.txt `
echo

二、引用nmap的并发测试工具,可以快速测试主机状态,我们只需要测试主机是否在线运用ping功能测试就OK

#!/bin/bash
#Author  xiaoY
#运用第三方工具nmap,扫描测试主机的连通性,用awk将测试结果选出存入文件
#选项-sP是只进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试
OK(){
rpm -q nmap || yum -y install nmap
nmap -sP 192.168.4.0/24 | awk '/[0-9]$/{print $NF}' >ok.txt
}

OK &>/dev/null

#引用变量ip对结果进行判断,然后分别存储在线和不在线的主机号
#在循环之前初始化存储文件
>success.txt
>fail.txt
ip=1
while [ $ip -lt 255 ]
do
  egrep -w 192.168.4.$ip ok.txt  &> /dev/null
  if [ $? -eq 0 ];then
    echo  $ip, >> success.txt
  else
    echo  $ip, >> fail.txt
  fi
  let ip++
done

echo  "不在线的主机:"
echo -n  `sort -n fail.txt `
echo
echo  "在线的主机:"
echo -n `sort -n success.txt `
echo

小结:ping测试需要一定的时间,需要在最终输出结果之前设置等待时间,等待所有ping测试完成返回结果。

猜你喜欢

转载自blog.csdn.net/xy8310292/article/details/81407502