有时您想根据其IP地址获取远程Ubuntu计算机的地理位置。本文将介绍如何通过首先获取系统的公共服务器IP,然后使用此IP通过ipinfo.io和ipvigilante.com提供的API来获取地理位置来实现此目的。
我们已经在Ubuntu 18.04 LTS系统上运行了本文中提到的命令和过程。
在终端上显示IP地址的地理位置
为了获取服务器的地理位置,您将需要Curl下载器和JQ命令行工具。使用此工具,您可以从Internet的地理位置API获取并处理所需的数据。请按照以下步骤安装这些工具,然后使用计算机的公共IP获取所需的位置信息。
步骤1:安装Curl和jq软件包
Curl和jq可以通过Ubuntu官方存储库轻松获得,并且可以使用apt-get命令通过命令行进行安装。
通过系统应用程序启动器搜索或通过Ctrl + Alt + T快捷方式打开终端应用程序。
下一步是通过以下命令更新系统的存储库索引:
$ sudo apt-get update
这可以帮助您从Internet安装软件的最新可用版本。
请注意,只有授权用户才能在Ubuntu上添加,删除和配置软件。
现在您可以安装所需的工具了。您可以通过以sudo运行以下命令来执行此操作:
$ sudo apt-get install curl jq
系统可能会询问您sudo的密码,并且还会为您提供一个Y /n选项以继续安装。输入Y,然后按Enter;该软件将安装在您的系统上。但是,该过程可能需要一些时间,具体取决于您的Internet速度。
步骤2:找到Ubuntu机器/服务器的公共IP
公用IP地址可识别Internet上的所有服务器。这是直接或通过网络流量路由器分配给服务器的IP地址。我们可以使用ipinfo.io提供的API来获取您计算机的IP。
使用以下curl命令以获取您的公共IP:
$ curl https://ipinfo.io/ip
由于隐私问题,此处的输出模糊不清,它是公用IP,通过该IP在Internet世界中识别您的服务器。
步骤3:根据公共IP获取地理位置
知道您的公共IP后,您可以向ipvigilante.com的API请求,以向您发送服务器的地理位置。使用下面提到的curl命令获取您的位置详细信息,例如:
- 大陆
- 国家
- 州/省
- 市
- 纬度和经度
$ curl https://ipvigilante.com/<public-IP>
您获得的信息很漂亮,in-detail很好地达到了目的。
使用Bash脚本打印地理位置
不必每次都要检查地理位置时都遵循上述步骤,而是可以使用我们将在此处描述的bash脚本。使用此bash脚本,您可以通过运行此脚本的单个命令来使系统自动化以获取服务器的地理详细信息。这是您可以执行的操作:
在您喜欢的文本编辑器之一中打开一个新的脚本文件。我们将使用nano编辑器来打开名称为geo_location.sh的空脚本文件。
$ nano geo_location.sh
在该空文件中,添加以下脚本。
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
小费:
您可以从此处复制脚本,然后使用Ctrl + Shift + V或right-click菜单中的“粘贴”选项将其粘贴到终端中,而不是将整个脚本键入到您的bash文件中。
现在,通过Ctrl + X快捷键退出文件,并通过键入Y,然后按Enter键,将文件保存在“保存修改的缓冲区?”提示符下。
为了使此文件成为可执行脚本,请在终端中运行以下命令:
$ chmod +x geo_location.sh
最后,如下运行该脚本:
$ ./geo_location.sh
您可以看到此脚本如何将服务器的纬度,经度,城市和国家/地区名称整齐地打印到终端。
如果您只需一次获取服务器的地理位置,则无需形成bash脚本。否则,每次您需要根据Ubuntu计算机的公共IP来检查Ubuntu计算机的图形位置时,该脚本将自动执行整个过程。