博客主页:http://blog.csdn.net/minna_d
前言:源于今天想要检测数据包经过那些路由。尽管traceroute能肉眼看到IP,但我们不知道IP到底代表是在那个地方。
总得把IP地址手动粘贴出来baidu一下.程序完全可以替代这种纯手工操作。
[root@jjy /shell]# cat parseIpLocation.sh
#!/bin/bash
url_="http://opendata.baidu.com/api.php?query=106.186.116.111&co=&resource_id=6006&t=1422002856248&ie=utf8&oe=gbk&cb=op_aladdin_callback&format=json&tn=baidu&cb=jQuery11020047316015516255194_1422002618579&_=1422002618607"
for item in $@
do
ip_tmp=`echo $item | grep -E -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'`
if [[ -n $ip_tmp ]];then
url_tmp=${url_/106.186.116.111/$ip_tmp}
result=`echo $url_tmp | xargs curl 2> /dev/null | iconv -fGB2312 -t utf-8 | grep -o "location\":\"[^\"]*" | sed 's/location":"\(.*\)/\1/g'`
echo "ip:$ip_tmp location:$result"
fi
done
使用示例
[root@jjy /shell]# traceroute www.csdn.net | xargs parseIpLocation.sh | sort | uniq
ip:10.86.209.57 location:本地局域网
ip:10.86.209.74 location:本地局域网
ip:10.87.32.17 location:本地局域网
ip:113.105.140.6 location:广东省东莞市 电信
ip:14.17.69.22 location:广东省东莞市 电信
ip:183.59.15.205 location:广东省中山市 电信
ip:183.59.7.218 location:广东省湛江市 电信
ip:183.60.128.54 location:广东省东莞市 电信
ip:192.168.113.2 location:本地局域网
ip:202.97.80.14 location:中国 电信
ip:211.151.224.90 location:北京市 世纪互联
ip:211.151.232.45 location:北京市 世纪互联
ip:211.151.238.49 location:北京市 世纪互联
ip:220.181.0.193 location:北京市 电信
ip:220.181.17.6 location:北京市 电信
ip:59.151.17.161 location:北京市 世纪互联