前言:CDN和自做广域网负载均衡都需要各运营商的ip列表,本文介绍两种方法,并提供shell脚本供参考,本文仅获取了几大运营商的ip,如果要获取其他小运营商的可以修改shell脚本做到。
一、移动
1、获取移动分省ip
./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CMCC | grep -A1 inetnum | sed '-e/--/d'| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname://g'
得到所有移动ip列表所有项目
得到inetnum(ip行)和netname(省市描述)两行
删除grep增加的--分隔符
合并 inetnum和netname两行为一行
删除inetnum
删除netname
获取铁通ip段 MAINT-CN-CRTC
./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC | grep -A1 inetnum | sed '-e/--/d'| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname://g' >CRTC.txt
sed 's/-//g' CRTC.txt | awk '{print $1,","$2,",CRTC,",$3,$4,$5}' | sed 's/ //g' >CRTC_last.txt
2、 得到cm的所有ip
./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CMCC | grep -A1 inetnum | sed '-e/--/d'| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname://g' > CM.txt
3、 得到排序后分省的ip
grep CMNET CM.txt | sort -k4
二、联通
1、获取联通分省ip
./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP | grep -A1 inetnum | sed '-e/--/d'| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname://g'
2、形成文件CU.txt
./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP | grep -A1 inetnum | sed '-e/--/d'| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname://g' >CU.txt
三、电信
1、./whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET | grep -A1 inetnum | sed '-e/--/d'| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname://g' >CT.txt
四、另外一种获取各运营商脚本
位置 ip4.sh
#!/bin/sh
if [ $(echo $0 | grep '^/') ]; then
DATA_DIR=$(dirname $0)
else
DATA_DIR=$(pwd)/$(dirname $0)
fi
FILE=$DATA_DIR/ip_apnic
#rm -f $FILE
#wget -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
# NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/^[ ]*//g'`
NETNAME=`whois $ip@whois.apnic.net | grep -A1 inetnum| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname:/,/g' |sed 's/ //g'`
#echo $ip,$cnt,$NETNAME
echo $NETNAME
case $NETNAME in
*CNCGROUP*|*UNICOM*)
# echo $ip,$cnt,$NETNAME >>cn_all_by_province.txt
echo $NETNAME >>cn_all_by_province.txt
;;
*CHINANET*)
#echo $ip,$cnt,$NETNAME >>cn_all_by_province.txt
echo $NETNAME >>cn_all_by_province.txt
;;
*CMNET*)
#echo $ip,$cnt,$NETNAME >>cn_all_by_province.txt
echo $NETNAME >>cn_all_by_province.txt
;;
*)
#echo $ip,$cnt,$NETNAME >>cn_other.txt
echo $NETNAME >>cn_other.txt
;;
esac
done
五、综合比较
发现通过whois3获取的移动ip较多,主要是分省了;
whois获取的联通电信ip较多;
综合一下,联通电信用whois的脚本获取,移动的用whois3获取
六、实际脚本如下
1、whois的脚本用以获取联通电信的所有ip
#!/bin/sh
if [ $(echo $0 | grep '^/') ]; then
DATA_DIR=$(dirname $0)
else
DATA_DIR=$(pwd)/$(dirname $0)
fi
FILE=$DATA_DIR/ip_apnic
#rm -f $FILE
#wget -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
# NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/^[ ]*//g'`
NETNAME=`whois $ip@whois.apnic.net | grep -A1 inetnum| sed 'N;s/\n//g'|sed 's/inetnum://g'|sed 's/netname:/,/g' |sed 's/ //g'`
#echo $ip,$cnt,$NETNAME
echo $NETNAME
case $NETNAME in
*CNCGROUP*|*UNICOM*)
# echo $ip,$cnt,$NETNAME >>cn_all_by_province.txt
echo $NETNAME >>cn_all_by_province.txt
;;
*CHINANET*)
#echo $ip,$cnt,$NETNAME >>cn_all_by_province.txt
echo $NETNAME >>cn_all_by_province.txt
;;
*CMNET*)
#echo $ip,$cnt,$NETNAME >>cn_all_by_province.txt
echo $NETNAME >>cn_all_by_province.txt
;;
*)
#echo $ip,$cnt,$NETNAME >>cn_other.txt
echo $NETNAME >>cn_other.txt
;;
esac
done
2、获取移动ip的whois3脚本
获取命令同上
-------------下面主要是制作netscaler需要的ip列表,可以略过不看--------------------
3、首先取出cn_all*.txt的移动ip
sed -e '/CMNET/d' cn_all_by_province.txt >>cn_all_no_cm.txt
4、将whois3获取的移动ip和3合并到cn_last_20120925.txt
awk '{print $1,","$3,"," $4}' CM.txt | sed 's/ //g' |sed 's/-/,/g' >CM_last.txt
grep CMNET CM_last.txt >>cn_last_20120925.txt
5、将CM_last.txt中其他ip也导入
sed '/CMNET/d' CM_last.txt >CM_other.txt
awk -F, '{print $1,","$2,",CMNET,",$3,$4,$5}' CM_other.txt | sed 's/ //g' >>cn_last_20120925.txt
6、将whois脚本获取的 cn_all_by_province.txt 转换成cn_all_no_cm.txt
sed -e '/CMNET/d' cn_all_by_province.txt >>cn_all_no_cm.txt
7、按照第一部分的步骤生成铁通ip文件CRTC_last.txt
8、合并成 cn_last_20120925.txt
cat cn_all_no_cm.txt CRTC_last.txt >> cn_last_20120925.txt
阅读(3147) | 评论(0) | 转发(0) |