根据APNIC的最新IP地址列表及whois信息,生成的各主要运营商IP地址段
Last active
April 23, 2024 17:43
-
-
Save dishuostec/ad85c2b043977019f959e33b6411e235 to your computer and use it in GitHub Desktop.
每日更新IP段
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment