如何通过命令行查找一个IP的地理位置信息

本文由 极客范 - Boyd Wang 翻译自 Dan Nanni。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。

如果你想查找一个IP地址在地球上的实际地理位置,现在已经有好多在线的GeoIp查找服务你可以利用(例如geoiptool.com)。这些在线服务大多数都是由免费的像MaxMind这样的GeoIP数据库提供支持。在使用这些基于网页的服务同时,这里也有一些不同的方法来查询GeoIP数据库,尤其是Linux命令行。

在这篇教程里,我想展示一下如何通过Linux命令行获取IP地址的实际地理位置

方法一

第一种方法是使用geoiplookup工具,它是一个用于查询MaxMind的GeoIP数据库的命令行客户端。geoiplookup允许你查询一个IP地址(或域名)的地理信息或者网络信息。你可以通过以下命令安装它(它自带了免费的GeoIP数据库)。

在Debian,Ubuntu或Linux Mint上安装geoiplookup:

在Fedora上安装:

要在CentOS上安装,需要先打开EPEL源,然后使用yum命令:

默认情况下安装的geoiplookup以及GeoIP.dat数据库文件位于/usr/share/GeoIP。这个数据库只能查询到国家信息。

你可以从MaxMind上下载额外的GeoIP数据库,它将会告诉你更详细的信息而不仅仅是国家。你也可以从这个网站上下载到许多最新的GeoIP.dat数据库。我推荐你这么做因为从Linux源上安装的GeoIP.dat可能已经过时了。MaxMind上的GeoIP数据库每月更新一次。

要从MaxMind上安装GeoIP数据库,按照下面的方法。你可能想添加一个cronjob(crontab任务,crontab是Unix和类Unix系统中用于周期性执行任务的指令,译注)来使这个过程自动化。

现在如果你重新执行geoiplookup,你将会看到额外的自治系统编号(AS Number)信息。这将会让你大致了解这个IP地址是属于哪个管理域(administrative domain)。

如果在运行命令时不带任何参数,geoiplookup工具将只自动的使用GeoIP.dat和GeoIPASNum.dat,而不会用GeoLiteCity.dat。后面将教你查看城市一级的信息。

要获取城市一级的地理位置信息,需要显式的告诉geoiplookup使用GeoLiteCity.dat数据库。

输出包括州,城市,邮政编码,纬度和经度。所指示不同国家和网络地址的准确性因地而异。例如,宽带IP地址的地理位置信息要比移动网络准确。

方法二

如果你想免去安装和升级GeoIP数据库的烦恼,你可以试试ipinfo.io在线服务。和其他的服务不同,ipinfo.io提供了基于JSON的地理信息API,所以你可以很容易的在命令行使用像curl之类的工具获取地理信息。

geoip

需要注意的是它们的API限制每天最高1,000次请求。



原文链接: Dan Nanni 翻译: 极客范 - Boyd Wang

译文链接: http://www.geekfan.net/7863/

[ 转载请保留原文出处、译者和译文链接。]

爱游戏,爱开源,爱英语,也爱文字。个人主页:www.boydwang.com,新浪微博:@Boyd_W

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">