shell 判断IP地址

回复 收藏
本帖最后由 Landon 于 2016-1-2 21:26 编辑

我写的这个比较粗糙,但是非常简单,或许还能看出我有些地方多余了!
1.判断IP地址是否有效
2.网络号无效
3.判断是否是私有地址
4.判断是几类地址

#!/bin/bash
echo "输入一个ip判断是ABCDE类地址,网络号无效"
sleep 1
read_ip(){
read -p "Input a ip address ,I will check it :" ip
ip=`echo $ip |egrep  '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'`
if [ -z $ip ]
then
   echo "It's not ip,format like 192.168.1.1.Please try again."
   continue
fi
ip_a=`echo $ip|awk -F '.' '{print $1}'`
ip_b=`echo $ip|awk -F '.' '{print $2}'`
ip_c=`echo $ip|awk -F '.' '{print $3}'`
ip_d=`echo $ip|awk -F '.' '{print $4}'`

   if  [ $ip_a  -ge 1 -a $ip_a -le 255 ]
  then
     echo "check area 1 OK"
  else
     echo "check area 1 Error"
     continue
fi
  if [ $ip_b -ge 0 -a $ip_b -le 255 ]
     then
     echo "check area 2 OK"
    else
     echo "check area 2 Error"
     continue
fi

  if  [ $ip_c -ge 0 -a $ip_c -le 255 ]
      then
     echo "check area 3 OK"
else
     echo "check area 3 Error"
     continue
fi

  if [ $ip_d -ge 1 -a $ip_d -le 255 ]
     then
      echo "check area 4 OK"
     else
     echo "check area 4 Error"
     continue
fi

}
#循环

while :
do
   read_ip
##判断是否为A类地址和A类私有地址
if [ $ip_a -eq 10 -a $ip_d -ge 1 ]
then
echo "这是一个A类的私有地址"
  break
elif [ $ip_a -ge 1 -a $ip_a -le 126 -a $ip_d -ge 1 ]
then
  echo "这是一个A类地址"
  break
##判断是否为B类地址和B类私有地址
elif [ $ip_a -eq 127  -a $ip_b -le 31 -a  $ip_d -ge 1 ]
then
   echo "这是一个B类的私有地址"
   break
elif [ $ip_a -ge 128 -a $ip_a -le 191 -a  $ip_d -ge 1 ]
then
    echo "这是一个B类的地址"
    break

##判断是否为C类地址和C类私有地址
elif [ $ip_a -eq 172 -a $ip_a -eq 16 -a $ip_d -ge 1 ]
then
   echo "这是一个C类的私有地址"
   break
elif [ $ip_a -ge 192 -a $ip_a -le 223 -a  $ip_d -ge 1 ]
then
   echo "这是一个C类地址"
    break
####判断是否为D类地址和D类私有地址
elif [ $ip_a -ge 224 -a $ip_a -le 239 ]
then
    echo "这是一个D类地址"
     break
####判断是否为E类地址和E类私有地址
elif [ $ip_a -ge 240 -a $ip_a  -le 255 -a  $ip_d -lt 255 ]
then
    echo "这是一个E类地址"
    break
else
    echo "你输入的可能是一个保留地址,尝试一个新的IP"
    continue
fi
done


QQ图片20160102212615.png QQ图片20160102212621.png
2016-01-02 11:24 举报
已邀请:
0

xyl5869

赞同来自:

这么厉害的帖子都没人顶!!!
0

alex_shen

赞同来自:

顶起顶起

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: