Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 989|回复: 0

shell脚本函数判断输入的IP地址是否符合规则

[复制链接]

22

主题

69

帖子

2129

积分

金牌会员

Rank: 6Rank: 6

积分
2129
发表于 2015-5-7 23:44:05 | 显示全部楼层 |阅读模式

  1. #判断IP是否符合标准规则
  2. function judge_ip(){
  3.         #这里local $1出错,用2>/dev/null屏蔽掉错误,暂未发现影响输出结果
  4.         local $1 2>/dev/null
  5.         TMP_TXT=/tmp/iptmp.txt
  6.         echo $1 > ${TMP_TXT}
  7.         IPADDR=`grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' ${TMP_TXT}`
  8.         #判断有没有符合***.***.***.***规则的IP
  9.         if [ ! -z "${IPADDR}" ];then
  10.                 local j=0;
  11.                 #通过循环来检测每个点之前的数值是否符合要求
  12.                 for ((i=1;i<=4;i++))
  13.                 do
  14.                         local IP_NUM=`echo "${IPADDR}" |awk -F. "{print $"$i"}"`
  15.                         #判断IP_NUM是否在0与255之间
  16.                         if [ "${IP_NUM}" -ge 0 -a "${IP_NUM}" -le 255 ];then
  17.                                 ((j++));
  18.                         else
  19.                                 return 1
  20.                         fi
  21.                 done
  22.                 #通过j的值来确定是否继续匹配规则,循环四次,若都正确j=4.
  23.                 if [ "$j" -eq 4 ];then
  24.                         #确认是否为自己想要输入的IP地址
  25.             read -n 1 -p "你输入的IP是${IPADDR},确认输入:Y|y;重新输入:R|r:" OK
  26.             case ${OK} in
  27.                         Y|y) return 0;;
  28.                 R|r) return 1;;
  29.                 *) return 1;;
  30.             esac
  31.                 else
  32.                         return 1
  33.                 fi
  34.         else
  35.                 return 1
  36.         fi
  37. }
复制代码

函数调用方法:
  1. read -p "想要设置的IP示例为“192.168.1.1”,请输入:" IPADDRS
  2. judge_ip "${IPADDRS}";
  3. i=`echo $?`
  4. #循环直到输入正确的IP为止
  5. until [ "$i" -eq 0 ];do
  6.                 echo -e "\033[31m你输入了错误的IP:${IPADDRS} ====>>>>\033[0m"
  7.                 read -p "重新输入IP,示例“192.168.1.1”,请输入:" IPADDRS
  8.                 judge_ip "${IPADDRS}";
  9.                 i=`echo $?`
  10. done
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2019-1-22 22:09 , Processed in 0.029611 second(s), 20 queries , Apc On.

快速回复 返回顶部 返回列表