QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 854|回复: 3

在CU 看到一段很有用的代码

[复制链接]
发表于 2005-7-25 15:45:13 | 显示全部楼层 |阅读模式
自動產生 電信(CHINANET)/網通(CNCGROUP) IP 列表
[code:1]#!/bin/sh
FILE=/root/study/apnic/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 $ip:$cnt
        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 [email protected] | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:      \(.*\)/\1/g' | sed -e 's/-.*//g'`
   case $NETNAME in
   CHINANET|CNCGROUP)
      echo $ip/$mask >> $NETNAME
   ;;
   CHINATELECOM)
      echo $ip/$mask >> $NETNAME
   ;;
   OTHER_NETNAME_here)
   ;;
   esac
done [/code:1]

查看
[code:1]# cat CHINANET
[/code:1]
发表于 2005-7-25 16:38:03 | 显示全部楼层
[code:1]mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF)[/code:1]
hew 帮解释一下这句的意思吧。
回复

使用道具 举报

发表于 2005-7-25 19:58:11 | 显示全部楼层
here文档与bc脚本的综合。也就是用here文档写一个bc的脚本,再交给bc执行,最后用tail取得需要的输出。
回复

使用道具 举报

发表于 2005-7-26 10:07:08 | 显示全部楼层
计算 mask 的方法很有意思。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 20:25 , Processed in 0.038787 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表