网上好多检查IP地址格式的脚本,大都看起来让人晕乎乎的。。
这里贴一个我自己写的比较简单易懂的脚本,根据自己的需要稍加改动应该就可以用了~~~
#!/bin/sh
ip_string="1.1.1.1,-.2.2.2" ——多个ip用“,”分隔
checkip() {
local flag=0
for tmp_ip in `echo $ip_string| awk -F "," '{ i=1;while(i<=NF) {print $i;i++}}'`
do
local num
num=`echo $tmp_ip | awk -F "." '{print NF}'`
if [ "$num" != "4" ];then
echo "ip $tmp_ip format error!"
exit 1
fi
a=`echo $tmp_ip | awk -F. '{print $1}' | sed "s/[^0-9]//g"`
b=`echo $tmp_ip | awk -F. '{print $2}' | sed "s/[^0-9]//g"`
c=`echo $tmp_ip | awk -F. '{print $3}' | sed "s/[^0-9]//g"`
d=`echo $tmp_ip | awk -F. '{print $4}' | sed "s/[^0-9]//g"`
if [ -z "$a" ] || [ $a -le 0 -o $a -ge 255 ]
then
echo "ip $tmp_ip format error!"
exit 1
fi
if [ -z "$b" ] || [ $b -le 0 -o $b -ge 255 ]
then
echo "ip $tmp_ip format error!"
exit 1
fi
if [ -z "$c" ] || [ $c -le 0 -o $c -ge 255 ]
then
echo "ip $tmp_ip format error!"
exit 1
fi
if [ -z "$d" ] || [ $d -le 0 -o $d -ge 255 ]
then
echo "ip $tmp_ip format error!"
exit 1
fi
done
}
checkip $ip_string
执行结果如下:
[root@localdomain]# sh test.sh
ip -.2.2.2 format error!