我们可以使用开放API和命令中简单的bash脚本来查询远程Linux系统的IP地址的地理位置信息。互联网中服务器都有一个面向公众的IP地址,这个地址直接分配给服务器或用流量发送给服务器的路由再分配给该服务器。IP地址提供了一个简单的方法来跟踪时间上服务器的位置,可以使用ipinfo.io和ipvigilante.com提供的两个有用的API来获取和服务器连接的位置。
安装Curl和jq,为获取服务器的IP地址地理位置,需要安装curl命令行下载器和jq命令行工具来处理来自地理位置的API和JSON数据。
$ sudo apt install curl jq #Ubuntu/Debian
$ sudo yum install curl jq #CentOS/RHEL
$ sudo dnf install curl jq #Fedora 22+
$ sudo zypper install curl jq #openSUSE
查询服务器的公共IP地址,想获取服务器的公共IP地址可以用curl命令在终端向ipinfo.io发出API请求:
$ curl https://ipinfo.io/ip
从API获取IP位置数据,获取服务器公共IP地址后,现在可以使用以下命令向ipvigilante.com的API发出请求来获取地理位置数据,确保将其替换成<your ip address>为服务器的公共 IP。
$ curl https://ipvigilante.com/<your ip address>
为了自动化API流程,可以把getipgeoloc.sh使用您喜欢的任何命令行编辑器创建一个名为(您可以将其命名为任何您想要的)的脚本:
$ vim getipgeoloc.sh
再复制粘贴以下命令:
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq'.data.latitude, .data.longitude, .data.city_name, .data.country_name'
保存文件并使用以下命令使用脚本可执行:
$ chmod + x getipgeoloc.sh
最后运行脚本获取到Linux IP地理位置:
$./getipgeoloc.sh
上述脚本显示了城市和国家名称以及大致的经纬度坐标。
或者,您也可以运行上述命令而不将其保存在脚本中,如下所示。
$ curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq'.data.latitude, .data.longitude, .data.city_name, .data.country_name'