Skip to content

Instantly share code, notes, and snippets.

@dishuostec
Last active April 23, 2024 17:43
Show Gist options
  • Save dishuostec/ad85c2b043977019f959e33b6411e235 to your computer and use it in GitHub Desktop.
Save dishuostec/ad85c2b043977019f959e33b6411e235 to your computer and use it in GitHub Desktop.
每日更新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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment