老谢博客

  • 首页
  • WordPress
  • 网络技术
  • 乱七八糟
  • 运维技术
  • 给我留言
  • 关于老谢

IP归属地分析Shell脚本

分类:linux日期:2014-06-07 - 10:18:54作者:老谢

看到一个结合Python转码的IP归属地分析Shell脚本的脚本,对这个脚本挺感兴趣,于是就拿过来测试一下,但是发现脚本执行后无法执行输出ip的信息:

[root@xj123 ip]# ./ip.sh
IP地址                  国家    运营商  区域    省份    城市    县/区
======================================================================
114.216.229.147

[root@xj123 ip]# ./ip.sh IP地址 国家 运营商 区域 省份 城市 县/区 ====================================================================== 114.216.229.147

由于不懂脚本就请教了D大,在此再次非常感谢D大不吝赐教(大晚上的打扰休息实在是不好意思的哈。。。),下面继续回到正题:

在D大的指导下,直接执行命令,看看能不能获取到数据:

[root@xj123 ip]curl -s http://ip.taobao.com/service/getIpInfo.php?ip=114.216.229.147 | sed 's/,/\n/g' | ./TransCoding.py | tr -d "{}\""
code:0
data:country:中国
countrŽä¸œ:CN
area_id:300000
region:江è‹çœ
region_id:320000
city:è‹å·žå¸‚
city_id:320500
county:
county_id:-1
isp:电信
isp_id:100017

[root@xj123 ip]curl -s http://ip.taobao.com/service/getIpInfo.php?ip=114.216.229.147 | sed 's/,/\n/g' | ./TransCoding.py | tr -d "{}\"" code:0 data:country:中国 countrŽä¸œ:CN area_id:300000 region:江è‹çœ region_id:320000 city:è‹å·žå¸‚ city_id:320500 county: county_id:-1 isp:电信 isp_id:100017

可以看到实际上获取到的数据,但是乱码,乱码先不管,先让脚本跑起来再说,目前脚本抓取信息是正常了,经过D大对脚本的检查,发现脚本的每局结尾少了一个`符号,补上之后ip.sh的脚本如下:

#!/bin/bash
 
ipInfo() {
  for i in `cat list`
  do
    TransCoding="/usr/bin/python TransCoding.py"
    JsonDate="curl -s http://ip.taobao.com/service/getIpInfo.php?ip=$i"
    country=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==2{print $3}'`
    area=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==4{print $2}'`
    region=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==6{print $2}'`
    city=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==8{print $2}'`
    county=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==10{print $2}'`
    isp=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==12{print $2}'`
    printf "%-18s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\n" $i $country $isp $area $region $city $county
  done
}
 
printf "%-18s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\n" IP地址 国家 运营商 区域 省份 城市 县/区
echo -e "\e[1;33m======================================================================\e[0m"
ipInfo;

#!/bin/bash ipInfo() { for i in `cat list` do TransCoding="/usr/bin/python TransCoding.py" JsonDate="curl -s http://ip.taobao.com/service/getIpInfo.php?ip=$i" country=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==2{print $3}'` area=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==4{print $2}'` region=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==6{print $2}'` city=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==8{print $2}'` county=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==10{print $2}'` isp=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==12{print $2}'` printf "%-18s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\n" $i $country $isp $area $region $city $county done } printf "%-18s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\n" IP地址 国家 运营商 区域 省份 城市 县/区 echo -e "\e[1;33m======================================================================\e[0m" ipInfo;

TransCoding.py的脚本如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import re
import sys
 
def main():
    for line in sys.stdin:
        sys.stdout.write(re.sub(r'\\u\w{4}',
            lambda e: unichr(int(e.group(0)[2:], 16)).encode('utf-8'),
            line))
 
if __name__ == '__main__':
    main()

#!/usr/bin/env python # -*- coding: utf-8 -*- import re import sys def main(): for line in sys.stdin: sys.stdout.write(re.sub(r'\\u\w{4}', lambda e: unichr(int(e.group(0)[2:], 16)).encode('utf-8'), line)) if __name__ == '__main__': main()

执行脚本,检查输出情况:

IP归属地分析Shell脚本

在windows系统下使用putty,脚本中的中文输出正常,远程抓取的数据输出乱码,同时发现一个奇怪的问题,OS X下面脚本输出乱码,但是远程数据的中文输出正常:

IP归属地分析Shell脚本

乱码一般是由于编码导致的,下面开始检查编码是否一致,经D大的提醒一定要统一编码,下面先检查服务器的编码是否正确:

[root@xj123 ip]# echo $LANG
en_US.UTF-8

[root@xj123 ip]# echo $LANG en_US.UTF-8

远程服务器的编码为UTF-8没问题,接着检查终端的编码格式,发现putty的编码格式使用了Use font encoding,远程服务器使用UTF-8的编码,应该没问题,先改成UTF-8试试,然后再执行脚本,发现输出跟OS X一样,脚本本身的中文乱码,远程抓取输出的中文输出正常,继续检查脚本的编码,发现使用了ANSI的编码,修改为UTF-8编码后再执行,终于没问题了,正常输出如下:

[root@xj123 ip]# ./ip.sh
IP地址                  国家    运营商  区域    省份    城市    县/区
======================================================================
114.216.229.147         中国    电信    华东    江苏省  苏州市  常熟市

[root@xj123 ip]# ./ip.sh IP地址 国家 运营商 区域 省份 城市 县/区 ====================================================================== 114.216.229.147 中国 电信 华东 江苏省 苏州市 常熟市

实例演示(分析最近暴力破解服务器密码的IP归属地),顺便吐槽下,为毛这么多天朝的ip:

cat /var/log/secure | awk '/Failed/ {print $(NF-3)}' | sort -u > list && ./ip.sh

cat /var/log/secure | awk '/Failed/ {print $(NF-3)}' | sort -u > list && ./ip.sh

[root@xj123 ip]# ./ip.sh
IP地址                  国家    运营商  区域    省份    城市    县/区
======================================================================
1.93.30.197             中国    鹏博士  华北    北京市  北京市
116.10.191.170          中国    电信    华南    广西壮族自治区  南宁市
122.226.95.219          中国    电信    华东    浙江省  金华市
123.131.134.18          中国    联通    华东    山东省  临沂市
123.199.130.91          中国    城市网络        华北    北京市  北京市
148.243.138.109         墨西哥
161.53.212.119          克罗地亚
162.13.89.226           英国
180.96.63.124           中国    电信    华东    江苏省  南京市
183.56.129.146          中国    电信    华南    广东省  潮州市
188.143.232.103         俄罗斯
198.100.147.60          加拿大
200.75.141.74           委内瑞拉
211.154.20.42           中国    华北    北京市  北京市
218.55.64.202           韩国
60.173.26.134           中国    电信    华东    安徽省  铜陵市
61.147.103.152          中国    电信    华东    江苏省  扬州市
61.147.103.162          中国    电信    华东    江苏省  扬州市
61.147.107.117          中国    电信    华东    江苏省  扬州市
61.172.238.226          中国    电信    华东    上海市  上海市  青浦区
61.174.50.163           中国    电信    华东    浙江省  湖州市
61.36.11.69             韩国
61.60.10.77             台湾    台湾省
82.112.1.38             俄罗斯
82.221.102.185          冰岛

[root@xj123 ip]# ./ip.sh IP地址 国家 运营商 区域 省份 城市 县/区 ====================================================================== 1.93.30.197 中国 鹏博士 华北 北京市 北京市 116.10.191.170 中国 电信 华南 广西壮族自治区 南宁市 122.226.95.219 中国 电信 华东 浙江省 金华市 123.131.134.18 中国 联通 华东 山东省 临沂市 123.199.130.91 中国 城市网络 华北 北京市 北京市 148.243.138.109 墨西哥 161.53.212.119 克罗地亚 162.13.89.226 英国 180.96.63.124 中国 电信 华东 江苏省 南京市 183.56.129.146 中国 电信 华南 广东省 潮州市 188.143.232.103 俄罗斯 198.100.147.60 加拿大 200.75.141.74 委内瑞拉 211.154.20.42 中国 华北 北京市 北京市 218.55.64.202 韩国 60.173.26.134 中国 电信 华东 安徽省 铜陵市 61.147.103.152 中国 电信 华东 江苏省 扬州市 61.147.103.162 中国 电信 华东 江苏省 扬州市 61.147.107.117 中国 电信 华东 江苏省 扬州市 61.172.238.226 中国 电信 华东 上海市 上海市 青浦区 61.174.50.163 中国 电信 华东 浙江省 湖州市 61.36.11.69 韩国 61.60.10.77 台湾 台湾省 82.112.1.38 俄罗斯 82.221.102.185 冰岛

原文地址 : https://www.xj123.info/4875.html

本站遵循 : 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)

版权声明 : 原创文章转载时,请务必以超链接形式标明文章原始出处

  • 上一篇:LNMP安装配置Zabbix搭建企业级监控平台
  • 下一篇:移除了失效的友情链接
5条评论
  1. kn007 说:

    沙发,好久没来了

    POST:2014-06-07 11:26 回复
  2. 大D 说:

    路过

    POST:2014-06-12 20:43 回复
  3. frankiez 说:

    正好用上,甚好,淘宝竟然有这接口好方便

    POST:2014-07-14 08:43 回复
  4. jlone 说:

    楼主解析有点慢啊 两三秒才解析出一条

    POST:2016-07-25 14:59 回复
  5. 谢文育 说:

    允许脚本之后归属地没变

    POST:2016-10-10 18:24 回复
发表评论 点击取消评论.

*必填

*必填

  • 文章归档
  • 子网计算
  • 我的共享
  • 锻炼计划
  • 给我留言
  • 关于老谢
2023年 4月
一 二 三 四 五 六 日
 12
3456789
10111213141516
17181920212223
24252627282930
« 10月    

最新文章

  • 2021好久没更新博客
  • Zabbix监控oxidized备份状态
  • Zabbix 5.0 LTS版本MySQL表分区及编译安装随记
  • centos7.9部署oxidized自动备份交换机配置
  • Surface Pro 4更换屏幕与电池
  • VCSA中删除horizon view链接克隆生成的replica-受保护副本
  • Esxi6.7U3安装SanDisk Fusion-io 1.3T ioscale Pci SSD加速卡驱动
  • 搭建ELK日志系统分析处理fortigate的syslog日志
  • 华为USG防火墙配置NAT映射回流解决内网通过公网映射访问内部服务器
  • 飞塔防火墙fortitoken配置

最新评论

  • 无敌风火轮:和索尼没啥关系,这是索尼电脑的...
  • zhudong:老大,有VMware Horizon 7.12相关资...
  • qx:所有连接失效了,求一份
  • RainH:大佬,这个111.111.111.111是什么鬼?...
  • 王叨叨:幸福的人都是相似的,不幸的人各有各...
  • 李海博客:李海博客前来学习!
  • 明月登楼:最近使用了ZeroSSL证书,感觉还不...
  • 鸟叔:尽管不知道干啥的,还是来顶一下
  • 鸟叔:鸟叔来贵博客参观学习,通过十年之约穿...
  • 周良粥凉:往前看。

日志存档

  • 2021年10月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2020年11月
  • 2020年9月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年1月
  • 2019年12月
  • 2019年10月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年3月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年1月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年7月
  • 2016年6月
  • 2016年4月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年5月
  • 2015年4月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2014年5月
  • 2014年4月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月
  • 2013年7月
  • 2013年6月
  • 2013年5月
  • 2013年4月
  • 2013年3月
  • 2013年2月
  • 2013年1月
  • 2012年12月
  • 2012年11月
  • 2012年9月
  • 2012年8月
  • 2012年7月
  • 2012年6月
  • 2012年5月
  • 2012年4月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年12月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2011年8月
  • 2011年7月
  • 2011年6月
  • 2011年5月
  • 2011年4月
  • 2011年3月
  • 2011年2月
  • 2011年1月
  • 2010年12月
  • 2010年11月
  • 2010年10月
  • 2010年9月
  • 2010年8月
  • 2010年7月

W3C

  • XHTML 1.0 Transitional
  • CSS level 3
  • Google+
Copyright © 2010-2023 老谢博客 All rights reserved.
Gzipped 76.5% | Optimized loading 61 queries in 0.307 seconds | Memory 33.57 MB | 皖ICP备13010663号-1
Powered by WordPress. | Hosted By 腾讯云 | Theme by WordPress主题巴士 | 站点地图 | SiteMap | Uptime | 技术支持:苏州天剑计算机系统有限公司