c linux 判断ip合法_shell 检测ip的合法性与检测网络掩码的合法性

有时我们需要检测IP输入的正确性与网络掩码的正确性,用shell脚本写的:

#验证ip地址的正确性

check_ip_format()

{

echo $1 | grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null

if [ $? = 1 ]; then

return 1

else

a=`echo $1 | awk -F. '{print $1}'`

b=`echo $1 | awk -F. '{print $2}'`

c=`echo $1 | awk -F. '{print $3}'`

d=`echo $1 | awk -F. '{print $4}'`

if [ $a -ge 255 -o $a -le 0 -o $b -gt 255 -o $b -lt 0 -o $c -gt 255 -o $c -lt 0 -o $d -gt 255 -o $d -le 0 ]; then

return 2;

fi

#验证是否组播地址

if [ $a -ge 224 -a $a -le 239 ]; then

return 3

fi

#验证回环

if [ $a -eq 127 ]; then

return 4

fi

fi

return 0

}

#把数字转换为二进制数字

D2B()

{

num="$1"

d2b=`echo "obase=2;$num" | bc`

echo $d2b

}

#验证掩码的正确性

check_mask_format()

{

echo $1 | grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null

if [ $? = 1 ]; then

return 1

fi

a=`echo $1 | awk -F. '{print $1}'`

b=`echo $1 | awk -F. '{print $2}'`

c=`echo $1 | awk -F. '{print $3}'`

d=`echo $1 | awk -F. '{print $4}'`

a=`D2B $a`

b=`D2B $b`

c=`D2B $c`

d=`D2B $d`

for i in $a $b $c $d;do

[[ $i != 0 && ${#i} != 8 ]] && return 2

done

mask=$a$b$c$d

[[ "$mask" =~ ^1[1]*[0]*$ ]] || return 3

return 0

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值