Shell脚本判断IP是否合法的多种方法

  • A+
所属分类:shell

1.

#!/usr/bin/sh

function CheckIp
{
  ip=$1
  real_ip=$(echo $ip|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
  if echo $ip|grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null
  then
    if [ ${real_ip:no}=="yes" ]
    then
      echo "ip合法"
    else
      echo "ip不合法"
    fi
  else
    echo "ip格式错误"
  fi
}

CheckIp $1

2.

#!/usr/bin/sh

function CheckIp
{
  ip=$1
  if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]
  then
#cut -d指定分隔符. -f读取指定分割内容
# $() ${}的区别,$()相当于``,在多层次的复合替换中,` ` 须要额外的跳脱( \` )处理,而 $( ) 则比较直观,$()并不是所有shell都支持
# ${} $var 与 ${var} 并没有啥不一样。但是用 ${ } 会比较精确的界定变量名称的范围
#$[] $(()) : 它们是一样的,都是进行数学运算的
# [[]] 双方括号 针对字符串比较,同test命令一样
    a=$(echo $ip|cut -d. -f1)
    b=$(echo $ip|cut -d. -f2)
    c=$(echo $ip|cut -d. -f3)
    d=$(echo $ip|cut -d. -f4)
    if [ $a -le 255 -a $b -le 255 -a $c -le 255 -a $d -le 255 ]
    then
      echo "ip可用"
    else
      echo "ip不可用"
    fi
  else
    echo "ip格式不对"
  fi
}

CheckIp $1

3.

#!/usr/bin/sh

function CheckIp
{
  ip=$1
  read_ip=$(echo $ip|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4<=255{print "yes"}')
  if echo $ip|grep -E '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' >/dev/null
  then
    if [ $read_ip == "yes" ]
    then
      echo "ip可用"
      return 0
    else
      echo "ip不可用"
      return 1
    fi
  else
    echo "ip格式不对"
    return 1
  fi
}

while true
do
  read -p "请输入ip:" ip
  CheckIp $ip 
#通过shell的执行返回值来判断是否退出循环
  [ $? -eq 0 ]&& break
done

 

 

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: