如何从bash脚本获取系统的地理位置

您可以使用openapi和简单的bash脚本找到远程Linux系统的地理位置。地理定位服务器可以帮助您在物理世界中跟踪它,确保服务器位于区域热点。...

您可以使用openapi和简单的bash脚本找到远程Linux系统的地理位置。地理定位服务器可以帮助您在物理世界中跟踪它,确保服务器位于区域热点。

internet上的每台服务器都有一个面向公众的IP地址。这可以直接分配给服务器,也可以分配给向该服务器发送流量的路由器。IP地址为我们提供了有关服务器在世界上的位置的线索。我们可以通过ipinfo.co公司和IP警戒,并使用它来查看城市,州,和与服务器或其他远程系统相关的国家。这并不能给你一个精确的GPS定位;它只是让你看到IP地址的大致区域。

连接到远程系统

您将在Linux服务器或其他要地理定位的远程系统上运行以下命令,因此必须先连接到服务器并访问其上的shell。例如,您可以通过SSH进行连接。您可以在本地系统上运行命令来查找其位置,但您可能已经知道自己在哪里了!

安装卷曲和jq

我们需要两个工具来访问geolocationapi:curl来发出HTTP请求,jq来处理我们得到的JSON数据。打开一个终端,使用apt-get在基于Ubuntu或Debian的系统上安装这些工具。在其他Linux发行版上,请改用Linux发行版的包安装工具。

sudo apt-get install curl jq

查找服务器的公共ip地址

在获取地理位置数据之前,我们还需要服务器的公共IP地址。使用curl调用ipinfo.io文件在你的终端窗口。

curl https://ipinfo.io/ip

从api获取位置数据

现在我们有了服务器的公共IP,我们可以调用ipwillinte.com的API来获取地理位置数据。将<您的ip地址>替换为上一个命令中返回的地址。

curl https://ipvigilante.com/<your ip address>

如何从bash脚本获取系统的地理位置

让我们仔细看看我们从这次通话中得到了哪些数据:

如何从bash脚本获取系统的地理位置

API返回服务器所在的城市、国家和大陆。它还返回大致的纬度和经度坐标,以防我们要在交互式地图上绘制此服务器。我们将在脚本中使用“纬度”、“经度”、“城市名称”和“国家名称”。jq命令了解如何处理API数据并提取这四个字段。

创建脚本以自动执行api调用

我们可以创建一个脚本来获取地理位置数据并将其写入CSV格式的文件。数据将被写入一个名为server的文件_位置.txt在/tmp/目录中。打开您最喜欢的编辑器并创建一个名为地理定位.sh. **如下所示的脚本内容,并确保用自己的IP地址替换该IP地址:

#!/bin/sh OUTPUT_FILE=/tmp/server_location.txt # Grab this server's public IP address PUBLIC_IP=`curl -s https://ipinfo.io/ip` # Call the geolocation API and capture the output curl -s https://ipvigilante.com/${PUBLIC_IP} | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while read -r LATITUDE; do read -r LONGITUDE read -r CITY read -r COUNTRY echo "${LATITUDE},${LONGITUDE},${CITY},${COUNTRY}" | \ tr --delete \" > \ ${OUTPUT_FILE} done

保存脚本并返回终端。通过授予此文件的执行权限,使脚本可从终端执行。

chmod u+x geolocate.sh

现在你可以测试了。运行地理定位.sh编写脚本并检查输出文件的内容:

./geolocate.sh cat /tmp/server_location.txt

如何从bash脚本获取系统的地理位置

使用cron作业每天更新一次地理位置数据

让我们创建一个cron作业,使服务器每天更新一次其地理位置并将其保存到一个文件中。每日cron作业更新一个名为server的文件_位置.txt在服务器的/tmp/文件夹中。创建24小时cron作业就像将脚本放入/etc一样简单/cron.daily公司目录。我们必须使用sudo命令以root用户的身份复制文件,以避免权限问题。运行以下命令复制地理定位.sh至/etc/cron.daily公司目录。

sudo cp geolocate.sh /etc/cron.daily

这些更改是即时的,我们的脚本将每24小时运行一次,以更新/tmp/服务器的内容_位置.txt文件。我们可以使用这些数据做一些有趣的事情,比如在地图上绘制服务器,以及将地理位置与流量日志相结合,以查看服务器热点在世界上的位置。

  • 发表于 2021-04-03 22:58
  • 阅读 ( 281 )
  • 分类:互联网

你可能感兴趣的文章

什么是shell脚本,为什么要使用它

... 如何执行shell脚本?很简单。只需将脚本路径作为参数传递给shell: ...

  • 发布于 2021-03-13 04:53
  • 阅读 ( 246 )

顶级网站和书籍,让您成为linux命令行英雄

...bash是什么、不同的模式(交互式和非交互式)以及它是如何产生的基础知识开始,这个站点提供了一个全面的背景知识来帮助您理解命令行的机制。 ...

  • 发布于 2021-03-14 07:04
  • 阅读 ( 243 )

使用linux进行编程的7个绝佳理由

...为程序员和极客的天堂。我们已经写了很多关于操作系统如何适合从学生到艺术家的每个人的文章,但是是的,Linux是一个很好的编程平台。无论您是考虑到开放精神还是整个生态系统,都有很多理由考虑让Linux成为您编写代码...

  • 发布于 2021-03-14 19:41
  • 阅读 ( 220 )

如何使用applescript将bash脚本转换为可单击的应用程序

...为输入运行它。这些特殊的应用程序被称为水滴。下面是如何创建一个: ...

  • 发布于 2021-03-21 09:39
  • 阅读 ( 246 )

在linux中,“bash”是什么意思?

...在这篇短文中,我们将探讨Bash是什么,它做什么,以及如何开始使用它。 ...

  • 发布于 2021-03-28 13:14
  • 阅读 ( 449 )

关于linux中bash for loops的所有知识

... 第一行告诉运行这个程序的人如何运行它(即使用bash解释器)。第二个命令与您在命令行中输入的任何其他命令一样。将该文件另存为hello_世界.sh,然后: ...

  • 发布于 2021-03-29 06:22
  • 阅读 ( 307 )

哪个linux shell最好?比较了5种常见的贝壳

...你的计算机需要一个翻译层。这介于你告诉它做什么和它如何理解之间。 ...

  • 发布于 2021-03-30 18:45
  • 阅读 ( 366 )

如何使用chsh在linux上更改默认shell

Bash不是唯一的Linux shell。很容易尝试其他的shell,比如非常流行的Zsh。找到一个您喜欢的shell后,使用chsh命令将其设置为默认shell。我们会教你怎么做。 为什么贝壳很重要 shell位于您和操作系统之间。它在终端窗口内提供环境...

  • 发布于 2021-04-02 06:04
  • 阅读 ( 334 )

如何在linux上的bash中设置环境变量

Linux上有多种类型的环境变量。了解如何查看它们,为本地和远程登录创建它们,并使它们在重新启动后仍然有效。 环境变量的工作原理 启动终端窗口及其内部的shell时,会引用一组变量,以确保shell配置正确。这些变量还确...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 218 )

如何在linux上使用cd命令

...小又简单。 在使用Linux计算机的第一个小时内,您将学习如何使用Bash和其他shell附带的cd命令。也许您以前有在其他操作系统上使用它的经验,不需要解释。它会改变当前的工作目录,对吗?还有什么要知道的? 好吧,比你想象...

  • 发布于 2021-04-02 08:58
  • 阅读 ( 171 )
救赎1663
救赎1663

0 篇文章

相关推荐