因为的的网段是 192.168.1.0/24 ,
所以我只需遍历 192.168.1.1 到 192.168.1.255 之间的所有ip然后进行 ping 就可以了:
test.sh:
#!/bin/bash
for ip in 192.168.1.{1..255} ;
do
ping $ip -c 2 &> /dev/null ;
if [ $? -eq 0 ];
then
echo $ip is alive
fi
done
结果如下:
zifeiy@zifeiy-S1:~/文档$ bash test.sh
192.168.1.1 is alive
192.168.1.3 is alive
192.168.1.4 is alive
192.168.1.6 is alive
也可以修改成并行ping的:
test.sh:
#!/bin/bash
for ip in 192.168.1.{1..255} ;
do (
ping $ip -c 2 &> /dev/null ;
if [ $? -eq 0 ];
then
echo $ip is alive
fi
)
done
wait
在 for 循环中执行了多个后台进程,然后结束循环并终止脚本。
wait命令hau等待所有的子进程结束后再终止脚本。
也可以使用 fping (sudo apt-get install fping
),他的速度更快,用法如下:
fping -a 192.168.1/24 -g
或
fping -a 192.168.1.1 192.168.1.255 -g
(fping的用法暂时没有搞懂~)