分页: 1 / 2
帮忙测试一个脚本:判断IP地址的正确与合法!
发表于 : 2008-08-20 12:08
由 cnkilior
代码: 全选
echo 111.101.22.33 | sed -n -e 's/^\([1-9]\{1\}\.\|[1-9][0-9]\.\|2[0-5][0-5]\.\|1[0-9]\{2\}\.\)\([0-9]\{1\}\.\|[1-9][0-9]\.\|2[0-5][0-5]\.\|1[0-9]\{2\}\.\)\([0-9]\{1\}\.\|[1-9][0-9]\.\|2[0-5][0-5]\.\|1[0-9]\{2\}\.\)\([1-9]\{1\}$\|[1-9][0-9]$\|2[0-5][0-5]$\|1[0-9]\{2\}$\)/Y/p'
帮忙优化一下也非常感谢!
发表于 : 2008-08-20 12:22
由 eexpress
要是能这样嵌套才爽。没写出。
"[[0-9]\{1,3\}\.*]\{4\}"
原始的是这样。
[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}
发表于 : 2008-08-20 12:28
由 cnkilior
和我以前的一样。。。
---
发表于 : 2008-08-20 12:35
由 cnkilior
代码: 全选
echo 111.101.22.33 | sed -n -e 's/^\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)$/Y/p'
稍微改了一下!
发表于 : 2008-08-21 9:15
由 ychristian
代码: 全选
echo "192.168.0.1"| egrep [0-9]\{1,3\}\.*\{3\}[0-9]\{1,3\}$
这个怎么样?
发表于 : 2008-08-21 9:17
由 ychristian
cnkilior 写了:代码: 全选
echo 111.101.22.33 | sed -n -e 's/^\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)$/Y/p'
稍微改了一下!
你们还牵扯到的问题阿.我觉得不应该在匹配的地方来做ip地址的检查
应该在匹配完毕之后,单独的检查范围.
发表于 : 2008-08-21 9:18
由 bones7456
0.0.0.1 不算合法的IP吗?
发表于 : 2008-08-21 9:41
由 cnkilior
哎呀!这下就难了!
发表于 : 2008-08-21 9:45
由 cnkilior
发表于 : 2008-08-21 9:57
由 bones7456
0.0.0.0 呢?
发表于 : 2008-08-21 10:10
由 cnkilior
0开头的都非法!
发表于 : 2008-08-21 10:15
由 cnkilior
ychristian 写了:cnkilior 写了:代码: 全选
echo 111.101.22.33 | sed -n -e 's/^\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)$/Y/p'
稍微改了一下!
你们还牵扯到的问题阿.我觉得不应该在匹配的地方来做ip地址的检查
应该在匹配完毕之后,单独的检查范围.
我看过这样实现的一个例子(是我现在公司正在用的代码)。大概用了4个角本函数来实现。相当复杂,大概有50行。因为是在嵌入式设备上使用的,太费cpu了,就产生这样的想法!
发表于 : 2008-08-21 10:15
由 bones7456
$ ping -b 0.0.0.0
PING 0.0.0.0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.026 ms
发表于 : 2008-08-21 12:40
由 cnkilior
bones7456 写了:$ ping -b 0.0.0.0
PING 0.0.0.0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.026 ms
恩这个是合法IP
唯一一个0开头的合法IP。
接前面的,公司以前用的角本也把它人为的处理为非法IP
发表于 : 2008-08-21 12:44
由 cnkilior
还有几个非法IP被包含进去了
以0结尾的IP地址也是非法的。
代码: 全选
echo 111.101.22.33 | sed -n -e 's/^\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([0-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)\.\([1-9]\{1\}\|[1-9][0-9]\|2[0-5][0-5]\|1[0-9]\{2\}\)$/Y/p'
巧合的是我的代码貌似正确的。。
------
谁能告诉我0结尾的IP地址是不是合法的IP地址?
我这里PING发神经了,忽然又能发包了!
------
这是个很奇怪的IP,貌似代表网关GATEWAY!