用Shell查找局域网里哪些IP被占用

#!/bin/bash
IP=192.168.1       #定义变量
for i in `seq 0 255`       #for循环,查找192.168.1.0-255的所有地址
#for i in 192.168.1.{1,254}
do
  ping -c 2 $IP.$i >  /dev/null 2>&1    #ping 只发两个包,要不然不会自动结束,另外将屏幕输出信息重定向
  if [ `echo $?` -eq 0 ];then         #使用 echo$?判断命令执行结果的返回值
  echo -n "
  $IP.$i is online
"
  else
  echo -n "
          $IP.$i is offline
"
fi
done

这种查找方法比较简单,当然还有其他方法,如果要通过提取关键字的话,还需要使用多个管道符,相对来说降低了处理速度,所以不建议使用那种方式。

相关推荐