Shell对IP合法性检查

# 检查IP地址是否合法
check_ip()
{
	ret=1
	flage=`awk 'BEGIN {if (match(ARGV[1], "^.*:.*$") != 0) print "true"; else print "false"}' $1`
	if [ "${flage}" != "true" ]; then
		flage=`awk 'BEGIN {n=split(ARGV[1], A, ".");
			if (n == 4)
				for (i in A)
					if ((match(A[i], "^0$") != 0) ||
						(match(A[i], "^[1-9][0-9]?$") != 0) ||
						(match(A[i], "^1[0-9][0-9]$") != 0) ||
						(match(A[i], "^2[0-4][0-9]$") != 0) ||
						(match(A[i], "^25[0-5]$"))) {res=1;}
					else {res=0; break;}
			if (res == 1) print "true"; else print "false"}' $1`
		if [ "${flage}" = "true" ]; then
			ret=0
		fi
	else
		values=`echo $1 |tr '[0-9][a-f][A-F]' '='`
		if [ "${values}" != "::" ]; then
			flage=`awk 'BEGIN {n=split(ARGV[1], A, ":");
				if (n <= 8)
					for (i in A)
						if (A[i] == "") {if (++cnt > 2) {res=0; break;}}
						else if ((length(A[i]) <= 4) && (match(A[i], "^=+?$") != 0)) {res=1;}
						else {res=0; break;}
				if (res == 1) print "true"; else print "false"}' ${values}`
			if [ "${flage}" = "true" ]; then
				ret=0
			fi
		else
			ret=0
		fi
	fi

	return $ret
}

1、输入:check_ip 1.1.1.1,结果为:0

2、输入:check_ip 1.1.1.256,结果为:1

3、输入:check_ip 1::11,结果为:0




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值