#!/bin/bash
trap "exec 1000>&-;exec 1000<&-;exit 0" 2
mkfifo testfifo
exec 1000<>testfifo
rm -fr testfifo
for ((n=1;n<=254;n++)) #可修改n的值,以减小并发量
do
echo >&1000
done
sta=`date "+%s"`
for ((i=1;i<=254;i++))
do
read -u1000
{
ping -c 1 192.168.23.$i > /dev/null
if [ $? -eq 0 ];then
echo 192.168.23.$i >>ip_online
else
echo 192.168.23.$i >>ip_offline
fi
echo >&1000
}&
done
wait
end=`date "+%s"`
echo "TIME: `expr $end - $sta `"
exec 1000>&-
exec 1000<&-
知识点:
有名管道,后台运行,控制并发,ping格式
查看某网段在线的主机ip并输出运行时间