ping 判断IP通断
#!/bin/bash
start_time=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
m_ping() {
ip=192.168.$1.$2
ping -c2 -i0.1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
# echo "$ip is up "
echo "$ip is up" >> temfileup.txt
echo "---$ip up---" | tr -d '\n'
else
# echo "$ip is down"
echo "$ip is down" >> temfiledown.txt
fi
}
num=100
#创建命令管道文件,并绑定文件描述符,创建其文件描述,通过重>定向将数据导入管道文件
pipefile="/tmp/multiping_$$.tmp"
mkfifo $pipefile
exec 12<>$pipefile
for i in `seq $num`
do
echo "" >&12 &
done
for n4 in {1..25}
do
for n3 in {1..254}
do
read -u12
{
m_ping $n3 $n4
echo "" >&12
} &
done
done
wait
num_up=`sed -n '$=' temfileup.txt`
num_down=`sed -n '$=' temfiledown.txt`
echo "/n"
echo "ping_up数:$num_up"
echo "ping_down数:$num_down"
rm -rf $pipefile
rm -rf temfileup.txt
rm -rf temfiledown.txt
finish_time=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
run_time=$(($(($(date +%s -d "$finish_time")-$(date +%s -d "$start_time")))))
echo "脚本运行时间: $run_time"