## 过滤出IP while IFS=""read -r p || [ -n "$p" ] do ip=$(printf'%s\n'"$p" | cut -d' ' -f4) if [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then ips+=( $ip ) fi done < route_all.txt
## 获取IP对应的ASN for ip in"${ips[@]}"; do asns+=($(curl --retry 5 -s https://ipinfo.io/${ip}/org?token=${ipinfo_token} --connect-timeout 300 | cut -d' ' -f1 )) if [[ $ip = 59.43* ]] ; then route_vps+=(AS4809) fi done
## 与预定义列表比对,找出路由相关ASN for asn in"${asns[@]}"; do for route in"${routes[@]}"; do ifecho"$asn" | grep -q "$route"; then route_vps+=($route) fi done done
rm route_all.txt rm route.txt &> /dev/null
## 将ASN映射为预定义的ISP名称 for i in"${!route_vps[@]}"; do for o in"${!routes[@]}"; do if [[ "${route_vps[$i]}" == "${routes[$o]}" ]]; then echo"${routes_name[$o]}" >> route.txt fi done done