本帖最后由 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
我写的这个比较粗糙,但是非常简单,或许还能看出我有些地方多余了!
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
编辑回复