-
IP所属地查询 - [tips]2009-06-30
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://opendream.blogbus.com/logs/41695355.html
最近骨干网络问题不断,没事找事,就给自己提个需求,从日志中获得客户的IP后,查询统计受影响客户所属地,之前发过查询的方法: 【推荐】IP查询接口 ,懒人办懒事,写个shell,以后方便使用
受影响客户IP存放在:ip.txt中
#cat ip.txt
202.108.22.101
202.108.22.102
........
脚本check_states_pengyao.sh内容如下:
#cat check_states_pengyao.sh
#/bin/bash
LANG=zh_CN
State="北京 天津 黑龙江 河南 西藏 陕西 山西 内蒙古 安徽 上海 重庆 新疆 宁夏 广西 香港 澳门 黑龙江 吉林 辽宁 河北 青海 山东 江苏 浙江 福建 江西 湖南 湖北 广东 台湾 海南 甘肃 陕西 四川 贵州 云南 美国"IP_FILE=$1
ADD_FILE=add.txt
STATE_TMP=states_tmp.txt
STATE_FILE=states.txt
usage(){
echo "Usage: $0 ip.txt"
exit 1
}
check(){
> ${ADD_FILE};
> ${STATE_FILE}
> ${STATE_TMP}
}
query_main(){
while read ip
do
curl -silent http://www.youdao.com/smartresult-xml/search.s\?type\=ip\&q\=$ip|awk 'BEGIN{FS="[<>]"}/location/{print $3}' >> ${ADD_FILE}
done < $IP_FILE
}
state_stat(){
for i in ${State}
do
awk 'BEGIN{sum=0}/'$i'/{sum=sum+1}END{print "'$i'""\t"sum}' ${ADD_FILE} >> ${STATE_TMP}
done
sort -k 2 -n -r ${STATE_TMP} |tee ${STATE_FILE}
}
if [ $# -eq 1 ]
then
check && query_main && state_stat
else
usage
fi执行方法:
#bash check_states_pengyao.sh ip.txt
生成的统计信息会在屏幕上输出,并存放在当前目录的states.txt中
PS:由于海外用户数量较少,但发现有美国客户,暂且将其当成中国的一个省做处理了吧(没准这个客户就是个华侨),O(∩_∩)O~,看谁还敢说“外国的月亮比中国圆”
收藏到:Del.icio.us







