免费注册 查看新帖 |

Chinaunix

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

关于这个脚本的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-19 04:07 |只看该作者 |倒序浏览
脚本内容如下

#!/bin/sh
FILE=/tmp/ip_apnic
rm -f $FILE
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
        echo $ipcnt
        mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF
)
               echo $ip/$mask >> cn.net
        NETNAME=`whois $ip | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/-.*//g'`
        case $NETNAME in
        UNICOM)
                echo $ip/$mask >> UNICOM
        ;;
        CHINANET)
                echo $ip/$mask >> CHINANET
        ;;
        esac
done


  系统是fedora14,   脚本最终只生成cn.net 一个文件,    是什么原因呢?  case语句的问题么? 求指导

论坛徽章:
0
2 [报告]
发表于 2012-03-19 11:01 |只看该作者
你通过sed拿到的 $NETNAME 里面包含了空格,所以,case语句没有正常工作。

论坛徽章:
0
3 [报告]
发表于 2012-03-27 22:33 |只看该作者
本帖最后由 xiangziluotuo 于 2012-03-27 22:34 编辑

可以这样改一下:
  1. NETNAME=$(whois $ip | sed -e '/./{H; !d}' -e 'x; /netnum/!d' |grep ^net |sed -e 's/.*:\(.*\)/\1/g' | sed -e 's/-.*//g')
复制代码
为什么要这样呢,太麻烦了~用这个:
  1. NETNAME=$(whois $ip |grep netname| cut -d : -f 2| sed 's/ *\(.*\)-.*/\1/')
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP