根据APNIC的最新IP地址列表及whois信息,生成的各主要运营商IP地址段
参考:https://github.com/clangcn/everyday-update-cn-isp-ip
根据APNIC的最新IP地址列表及whois信息,生成的各主要运营商IP地址段
参考:https://github.com/clangcn/everyday-update-cn-isp-ip
#!/bin/bash | |
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin | |
export PATH | |
# discriminate per isp from apnic. | |
# define save ip result directory. | |
save_dir="./ispip" | |
# get all ip list values from apnic. | |
apnic_all_ip="$save_dir/_apnic-latest-ipv4" | |
if [ ! -d "$save_dir" ]; then | |
mkdir "$save_dir" | |
fi | |
# delete old exist file. | |
if [ -e "$apnic_all_ip" ];then | |
rm -f $apnic_all_ip | |
fi | |
if [ -e $save_dir/all_china.txt ];then | |
rm -f $save_dir/all_china.txt | |
fi | |
if [ -e $save_dir/all_foreign.txt ];then | |
rm -f $save_dir/all_china.txt | |
fi | |
if [ -e $save_dir/china_cuncc.txt ];then | |
rm -f $save_dir/china_cuncc.txt | |
fi | |
if [ -e $save_dir/china_telecom.txt ];then | |
rm -f $save_dir/china_telecom.txt | |
fi | |
if [ -e $save_dir/china_cernet.txt ];then | |
rm -f $save_dir/china_cernet.txt | |
fi | |
if [ -e $save_dir/china_crtc.txt ];then | |
rm -f $save_dir/china_crtc.txt | |
fi | |
if [ -e $save_dir/china_cmcc.txt ];then | |
rm -f $save_dir/china_cmcc.txt | |
fi | |
if [ -e $save_dir/china_other.txt ];then | |
rm -f $save_dir/china_other.txt | |
fi | |
printf "Download latest list..." | |
wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/\|..\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > "$apnic_all_ip" | |
echo done | |
printf "Filter Foreign list..." | |
grep -v "^CN|" "$apnic_all_ip" > "$save_dir/all_foreign.txt" | |
echo done | |
printf "Filter China list..." | |
grep "^CN|" "$apnic_all_ip" > "$save_dir/all_china.txt" | |
echo done | |
echo "# 中国电信 $(date +'%Y-%m-%d %H:%M:%S')" > ${save_dir}/china_telecom.txt | |
echo "# 中国联通 $(date +'%Y-%m-%d %H:%M:%S')" > ${save_dir}/china_cuncc.txt | |
echo "# 中国移动 $(date +'%Y-%m-%d %H:%M:%S')" > ${save_dir}/china_cmcc.txt | |
echo "# 中国铁通 $(date +'%Y-%m-%d %H:%M:%S')" > ${save_dir}/china_crtc.txt | |
echo "# 中国教育网 $(date +'%Y-%m-%d %H:%M:%S')" > ${save_dir}/china_cernet.txt | |
echo "# 中国其他ISP $(date +'%Y-%m-%d %H:%M:%S')" > ${save_dir}/china_other.txt | |
printf "Loop China list" | |
while read line | |
do | |
printf "." | |
isp_ip=`echo $line | awk -F'/' '{print $1}'` | |
isp_info=`whois -h whois.apnic.net $isp_ip | grep -E "mnt-|netname|e-mail" | awk '{print $2}' | xargs` | |
# CNC | |
into_cnc=`echo $isp_info | sed -n '/CNC/p'` | |
into_cnc_small=`echo $isp_info | sed -n '/cnc/p'` | |
# CHINAUNICOM | |
into_unicom=`echo $isp_info | sed -n '/UNICOM/p'` | |
# CHINATELECOM | |
into_chinatelecom=`echo $isp_info | sed -n '/CHINANET/p'` | |
into_telecom=`echo $isp_info | sed -n '/TELECOM/p'` | |
into_bjtel=`echo $isp_info | sed -n '/BJTEL/p'` | |
# CERNET | |
into_cernet=`echo $isp_info | sed -n '/CERNET/p'` | |
# CRTC | |
into_crtc=`echo $isp_info | sed -n '/CRTC/p'` | |
# CHINAMOBILE | |
into_cmcc=`echo $isp_info | sed -n '/CMCC/p'` | |
into_cmnet=`echo $isp_info | sed -n '/CMNET/p'` | |
if [ "${into_cnc}" != "" ];then | |
echo "$line" >> ${save_dir}/china_cuncc.txt | |
elif [ "${into_cnc_small}" != "" ];then | |
echo "$line" >> ${save_dir}/china_cuncc.txt | |
elif [ "${into_unicom}" != "" ];then | |
echo "$line" >> ${save_dir}/china_cuncc.txt | |
elif [ "${into_chinatelecom}" != "" ];then | |
echo "$line" >> ${save_dir}/china_telecom.txt | |
elif [ "${into_telecom}" != "" ];then | |
echo "$line" >> ${save_dir}/china_telecom.txt | |
elif [ "${into_bjtel}" != "" ];then | |
echo "$line" >> ${save_dir}/china_telecom.txt | |
elif [ "${into_cernet}" != "" ];then | |
echo "$line" >> ${save_dir}/china_cernet.txt | |
elif [ "${into_crtc}" != "" ];then | |
echo "$line" >> ${save_dir}/china_crtc.txt | |
elif [ "${into_cmcc}" != "" ];then | |
echo "$line" >> ${save_dir}/china_cmcc.txt | |
elif [ "${into_cmnet}" != "" ];then | |
echo "$line" >> ${save_dir}/china_cmcc.txt | |
else | |
echo "$line" >> ${save_dir}/china_other.txt | |
fi | |
done<$save_dir/all_china.txt | |
echo done | |
date +"%Y-%m-%d %H:%M:%S" |