免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 20356 | 回复: 34
打印 上一主题 下一主题

如何检测用户输入的一串数字是一个IP地址?  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-26 12:06 |只看该作者 |倒序浏览
在一个Shell脚本里面如何检测用户输入的一串数字是一个IP地址?
我实在想不出是怎么处理它输入的东西.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-02-26 15:15 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

try:
  1. #!/bin/bash

  2. usage () {
  3.         echo "incorrect IP format."
  4.         chkip
  5. }

  6. chkip () {
  7.         read -p "Your IP: " IP
  8.         echo "$IP" | grep -q '[^0-9.]' && usage
  9.         [ $(echo -e "${IP//./\n}" | wc -l) -ne 4 ] && usage
  10.         for i in ${IP//./ } ; do
  11.                 [ $((i/8)) -lt 32 ] || usage
  12.         done
  13. }

  14. chkip
  15. echo "$IP is good!"
复制代码

论坛徽章:
0
3 [报告]
发表于 2004-02-27 02:13 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

来个好麻烦点的
  1. #!/bin/ksh
  2. #
  3. n=1
  4. if ! echo $1|grep -q "[a-zA-Z!@#$%^&*()-_+=|\`~<>,/?]"
  5. then
  6. for i in x y z w;do
  7.         export ip$i=$(echo $1|cut -f$n -d".")
  8.         ((n+=1))
  9. done
  10. (($ipx>0&&$ipx<256))&&(($ipy>=0&&$ipy<256))&&\
  11. (($ipz>=0&&$ipz<256))&&(($ipw>=0&&$ipw<256))&&\
  12. echo "$1 is correct IP!"||echo "$1 is incorrect IP!"
  13. else
  14. echo "input error!"
  15. fi
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-03-02 14:39 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

echo "please input IP:"
read ip
echo $ip |awk -F '.' '{ if ( ($1 >256 || $1 <0) || ($2 >256 || $2 < 0) || ($3 > 256 || $3 < 0) || ($
4 >256 || $4 < 0 )) print $0 ,"is incorrect"}'

论坛徽章:
0
5 [报告]
发表于 2004-03-02 14:39 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

谢谢~~!我琢磨琢磨看~!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-03-02 14:44 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

有人測過 1.2.3 或 1.2.3.4.5 的 format 嗎?  ^_^

還有:
.1.2.3.4
1.2.3.4.
.1.2.3
1.2.3.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-03-02 16:21 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

為了能夠測試更多錯誤格式,及更方便使用,我將原本的 code 修改了一下:
  1. #!/bin/bash

  2. usage () {
  3.         echo "incorrect IP format."
  4.         readip
  5.         chkip
  6. }

  7. readip () {
  8.         read -p "Your IP: " IP
  9. }

  10. chkip () {
  11.         echo "$IP" | grep -Eq '[^0-9.]|^\.|\.$' && usage
  12.         [ $(echo -e "${IP//./\n}" | wc -l) -ne 4 ] && usage
  13.         for i in ${IP//./ } ; do
  14.                 [ $((i/8)) -lt 32 ] || usage
  15.         done
  16. }

  17. if [ "$1" ]; then
  18.         IP=$1
  19. else
  20.         readip
  21. fi
  22. chkip
  23. echo "$IP is good!"
复制代码

论坛徽章:
0
8 [报告]
发表于 2004-03-02 16:27 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

echo "please input IP:"
read ip
echo $ip |awk -F"." '{
if ( ($1>256 || $1<0) || ($2>256 || $2 < 0) || ($3 > 256 || $3 < 0) || ($ 4 >256
|| $4 < 0 ) || ($NF>4) ) print $0 ,"is incorrect"}'

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-03-02 16:36 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

原帖由 "taocb006" 发表:
echo "please input IP:"
read ip
echo $ip |awk -F"." '{
if ( ($1>256 || $1<0) || ($2>256 || $2 < 0) || ($3 > 256 || $3 < 0) || ($ 4 >256
|| $4 < 0 ) || ($NF>4) ) print $..........


請問這跟 zhhui2000 貼的差在哪?

论坛徽章:
0
10 [报告]
发表于 2004-03-02 16:42 |只看该作者

如何检测用户输入的一串数字是一个IP地址?

增加了$NF等判断,兄弟!!!

对于.1.2.3.4.或1.2.3.4.5等,原来的是有问题的! 
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP