shell脚本判断IP通断

 

#!/bin/bash
while :
do
read -p "输入要ping的网络IP前三位: "  ip
#regex="\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])"
#ckStep2=`echo $ip | egrep $regex | wc -l`
#if [ $ckStep2 -eq 0 ];then
#       echo "The string $IPADDR is not a correct ipaddr!!!"       
#fi
##############方法2#############################
#判断输入的ip地址是否仅由数字和点组成,并将值赋给m。
#判断输入的ip地址的小数点的个数,复制给n
m=`echo $ip |sed 's/[0-9.]//g'`
n=`echo $ip |sed 's/[0-9]//g'|wc -c`
#截取ip地址的四个数字的部分,并分别复制。
n1=`echo $ip |cut -d'.' -f1`
n2=`echo $ip |cut -d'.' -f2`
n3=`echo $ip |cut -d'.' -f3`
#n4=`echo $ip |cut -d'.' -f4`
if  [ ! $m = ~^[0-9] ];then
echo "The string $ip is not a correct ipaddr!!!,非纯数字"
else
#第一个if通过m和n来判断输入的ip是否符合要求
  if [ -n "$m" ] || [ "$n" -ne 3 ] || [ -z "$n1" ] || [ -z "$n2" ] || [ -z "$n3" ];then
  echo "The string $ip is not a correct ipaddr!!!"
  else
#第二个if通过n1到n4来判断输入的范围是否符合要求。
if [ $n1 -lt 0 ] || [ $n1 -gt 255 ] || [ $n2 -lt 0 ] || [ $n2 -gt 255 ] || [ $n3 -lt 0 ] || [ $n3 -gt 255 ];then
echo "The string $IPADDR is not a correct ipaddr!!!" 
else
m_ping() {
ping -c2 -i0.1 -W1 $1  &>/dev/null
if [ $? -eq 0 ];then
     echo "$1 is up"
     echo "$1 is up"  >> temfile.txt
fi
}
#控制进程数量
num=50
#创建命令管道文件,并绑定文件描述符,创建其文件描述,通过重定向将数据导入管道文件
pipefile="/tmp/multiping_$$.tmp"
mkfifo $pipefile
exec 12<>$pipefile
for i in `seq $num`
  do
 echo "" >&12 &
  done
for j in {1..254}
   do
read -u12
  {
  m_ping $ip.$j
#  echo -ne  "---\r"
  echo "" >&12
  } &
   done
wait
num=`sed -n '$=' temfile.txt`
echo "ping通数:$num"
rm -rf $pipefile
rm -rf temfile.txt
#echo "/n"

  fi
  fi
  fi

done

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值