判断IP是否正确的shell 脚本

回复 收藏
  1. #! /bin/bash
  2. checkip() {
  3.         if echo $1 |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ; then
  4.                 a=`echo $1 | awk -F. '{print $1}'`
  5.                 b=`echo $1 | awk -F. '{print $2}'`
  6.                 c=`echo $1 | awk -F. '{print $3}'`
  7.                 d=`echo $1 | awk -F. '{print $4}'`
  8.                 for n in $a $b $c $d; do
  9.                         if [ $n -ge 255 ] || [ $n -le 0 ]; then
  10.                                 echo 'bad ip(2)!'
  11.                                 return 2
  12.                         fi
  13.                 done
  14.         else
  15.                 echo 'bad ip(1)!'
  16.                 return 1
  17.         fi
  18. }
  19. echo -n "Please input the ip:"
  20. read  ip
  21. checkip  $ip
2010-12-24 12:58 举报
已邀请:
0

阿铭 管理员

赞同来自:

说明,如果输入的IP为正确的,那么没有任何提示,返回状态码为0.否则返回1或者2.
0

阿铭 管理员

赞同来自:

另外直接用grep 匹配一个IP的方法
grep -Ew '((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)'

或者  egrep  -w '((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)\.){3}(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)'

2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]? 的意思是分三种情况来匹配0-255的数。

如果第一位是2,则第二位是0到4都行,第三位是任意一个数字。2[0-4][0-9]

如果前两位是25,则第三位是0到5。  25[0-5]

剩下的情况就是第一位是0或者1,则只要至少一个数字存在就行了。[01]?[0-9][0-9]?
0

So Long

赞同来自:

本帖最后由 程城 于 2014-9-5 01:30 编辑

铭哥说的第二种方法还是有些看不懂。铭哥啥时将这个例子详细的给我们讲下。
0

丁张龙

赞同来自:

just see don`t say
0

蓝色风暴

赞同来自:

ifconfig | grep -E '\b((([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5][0-4])\.)\b){3}\b([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5][0-4])\b'
这个应该才是匹配真正意义上的IP地址
0

lyhabc

赞同来自:

if echo $1|grep -Eqi "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$"
then

受教了
0

奔跑的蜗牛

赞同来自:

可以?

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: