题目要求:写一个shell脚本,探测局域网内存活主机
首先,我们的思路是在循环中不断ping主机,然后根据ping的结果来判断主机是否存活
本题中ping语句如下:
ping -c 3 -i 0.3 -W 1 192.168.1.1
解释一下参数:-c 3代表发送3个icmp包
-i 0.3代表发包时间间隔
-W 1代表等待超时的时间为1
然后我们需要将上面的结果重定向到一个变量中,这里给大家讲一个很特殊的重定向
ping -c 3 -i 0.3 -W 1 192.168.1.1 &> /dev/null
/dev/null是一个“黑洞”,用于将输入丢弃
&> 表示同时重定向标准输出和标准错误输出
这是有一个特殊的变量:?,?的值为0或1,分别代表不可达/可达
接下来就是写到循环中,并判断?的值
整体代码如下:
#!/bin/bash
for i in `seq 254`
do
#执行 ping
ping -c 3 -i 0.3 -W 1 192.168.1.$i &> /dev/null
#判断主机是否存活
if [ $? == 0 ];then
echo "192.168.1.$i is up!"
else
echo "192.168.1.$i is down!"
fi
done