编程说明:
本文将介绍两种方法编写shell脚本来进行某一个网段内所有主机连通性的检测,主要用到的还是for循环语句的方式。
方法一:
#!/bin/bash
#功能描述(Description):测试某个网段内所有主机的连通性
net="194.168.4"
for i in {1..254}
do
ping -c2 -i0.2 -W1 $net.$i &>/dev/null
if [ $? -eq 0];then
echo "$net.$i is up."
else
echo "$net.$i is down."
fi
done
方法二:
第二种方法为使用seq快速生成字母序列。因为seq是一个命令,而此时需要的是命令的执行结果,所以需要使用$()或``对命令进行扩展,只获取命令执行的结果。
#!/bin/bash
#功能描述:测试某个网段内所有主机的连通性
#可以使用$()或者``对命令进行扩展
net="192.168.4"
for i in $(seq 254)
#for i in `seq 254` 两种写法都是只获取seq命令的结果
do
ping -c2 -i0.2 -W1 $net.$i &>/dev/null
if [ $? -eq 0 ]; then
echo "$net.$i is up."
else
echo "$net.$i is down."
fi
done