如何從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
  • 閱讀 ( 48 )
  • 分類:網際網路

你可能感興趣的文章

什麼是shell指令碼,為什麼要使用它

... 如何執行shell指令碼?很簡單。只需將指令碼路徑作為引數傳遞給shell: ...

  • 發佈於 2021-03-13 04:53
  • 閲讀 ( 54 )

頂級網站和書籍,讓您成為linux命令列英雄

...bash是什麼、不同的模式(互動式和非互動式)以及它是如何產生的基礎知識開始,這個站點提供了一個全面的背景知識來幫助您理解命令列的機制。 ...

  • 發佈於 2021-03-14 07:04
  • 閲讀 ( 58 )

使用linux進行程式設計的7個絕佳理由

...式設計師和極客的天堂。我們已經寫了很多關於作業系統如何適合從學生到藝術家的每個人的文章,但是是的,Linux是一個很好的程式設計平臺。無論您是考慮到開放精神還是整個生態系統,都有很多理由考慮讓Linux成為您編寫...

  • 發佈於 2021-03-14 19:41
  • 閲讀 ( 49 )

7個簡單的windows指令碼,為您節省時間和精力

...然後從這裡開始。弄清楚它們是怎麼工作的。想一想你該如何為自己調整它們。一旦你對什麼是指令碼感到滿意,你就可以考慮潛入編碼的本質。 ...

  • 發佈於 2021-03-15 21:37
  • 閲讀 ( 56 )

如何在linux上安裝和使用powershell

... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...

  • 發佈於 2021-03-16 02:34
  • 閲讀 ( 52 )

如何測試linux pc的效能

...此,這幾乎是獲取定量資料的唯一方法,說明系統的效能如何——如果您的數字不足,這表明您可能希望升級一些PC元件。 ...

  • 發佈於 2021-03-17 09:58
  • 閲讀 ( 48 )

如何使用applescript將bash指令碼轉換為可單擊的應用程式

...為輸入執行它。這些特殊的應用程式被稱為水滴。下面是如何建立一個: ...

  • 發佈於 2021-03-21 09:39
  • 閲讀 ( 52 )

如何在windows10上獲得linux bash shell

... 如何在windows10上安裝linux bash shell ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 60 )

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

...在這篇短文中,我們將探討Bash是什麼,它做什麼,以及如何開始使用它。 ...

  • 發佈於 2021-03-28 13:14
  • 閲讀 ( 61 )

關於linux中bash for loops的所有知識

... 第一行告訴執行這個程式的人如何執行它(即使用bash直譯器)。第二個命令與您在命令列中輸入的任何其他命令一樣。將該檔案另存為hello_世界.sh,然後: ...

  • 發佈於 2021-03-29 06:22
  • 閲讀 ( 59 )
救贖1663
救贖1663

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦