Как да получите географското местоположение на вашата система от Bash скрипт

Можете да намерите географското местоположение на отдалечена Linux система, като използвате отворени API и прост bash скрипт. Геолокирането на сървър може да ви помогне да го проследите във физическия свят, като гарантирате, че сървърите са разположени в регионални горещи точки.

Всеки сървър в интернет има публичен IP адрес. Това е или директно присвоено на сървъра, или се присвоява на рутер, който изпраща трафик към този сървър. IP адресите ни дават представа за това къде се намира този сървър в света. Можем да получим тези геолокационни данни чрез два отворени API, предоставени от ipinfo.co и IP Vigilante, и да ги използваме, за да видим града, държавата и държавата, свързани със сървър или друга отдалечена система. Това не ви дава точно GPS местоположение; той просто ви позволява да видите общата област на IP адреса.

Свържете се с отдалечена система

Ще изпълнявате следните команди на сървъра на Linux или други отдалечени системи, които искате да геолокирате, така че първо трябва да се свържете със сървъра и да получите достъп до обвивка на него. Например, можете да се свържете чрез SSH. Можете да изпълните командите на вашата локална система, за да намерите нейното местоположение, но вероятно вече знаете къде се намирате!

  Как да отстраните проблеми с печата в Microsoft Word

Инсталирайте curl и jq

Нуждаем се от два инструмента за достъп до API за геолокация: curl, за да правим HTTP заявки и jq за обработка на JSON данните, които получаваме обратно. Отворете терминал и използвайте apt-get, за да инсталирате тези инструменти на базирани на Ubuntu или Debian системи. В други дистрибуции на Linux използвайте вместо това инструмента за инсталиране на пакети на вашата Linux дистрибуция.

sudo apt-get install curl jq

Намерете публичния IP адрес на сървъра

Нуждаем се и от публичния IP адрес на сървъра, преди да можем да получим данните за геолокация. Използвайте curl, за да направите извикване на API към ipinfo.io в прозореца на вашия терминал.

curl https://ipinfo.io/ip

Вземете данни за местоположение от API

Сега, когато имаме публичния IP на сървъра, можем да направим извикване към API на ipvigilante.com, за да получим данните за геолокацията. Сменете с адреса, който се върна в предишната команда.

curl https://ipvigilante.com/

Нека да разгледаме по-отблизо какви данни получаваме от това обаждане:

  10 от най-уникалните генератори на Lorem Ipsum

API връща града, държавата и континента, в които се намира нашият сървър. Той също така връща приблизителните координати за географска ширина и дължина, в случай че искаме да нарисуваме този сървър на интерактивна карта. Ще използваме „географска ширина“, „дължина“, „име на град“ и „име на държава“ в нашия скрипт. Командата jq разбира как да обработва данните от API и да извлича тези четири полета.

Създаване на скрипт за автоматизиране на извикването на API

Можем да създадем скрипт, който грабва данните за геолокацията и ги записва във файл във формат CSV. Данните ще бъдат записани във файл, наречен server_location.txt в директорията /tmp/. Отворете любимия си редактор и създайте скрипт с име geolocate.sh. Поставете съдържанието на скрипта, показано по-долу, и не забравяйте да замените 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

Сега сте готови да го тествате. Стартирайте скрипта geolocate.sh и проверете съдържанието на изходния файл:

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

Актуализиране на данните за геолокация веднъж на ден с Cron работа

Нека създадем cron задание, за да накараме нашия сървър да актуализира геолокацията си и да го записва във файл веднъж на ден. Ежедневното задание на cron актуализира файл, наречен server_location.txt в папката /tmp/ на сървъра. Създаването на 24-часова работа за cron е толкова лесно, колкото поставянето на нашия скрипт в директорията /etc/cron.daily. Трябва да използваме командата sudo, за да копираме файла като root потребител, за да избегнем проблеми с разрешенията. Изпълнете следната команда, за да копирате geolocate.sh в директорията /etc/cron.daily.

sudo cp geolocate.sh /etc/cron.daily

Тези промени са незабавни и нашият скрипт ще се изпълнява на всеки 24 часа, за да актуализира съдържанието на файла /tmp/server_location.txt. Можем да използваме тези данни, за да правим интересни неща, като например да начертаем нашите сървъри на карта, както и да комбинираме геолокация с дневници на трафика, за да видим къде по света са горещите точки на нашите сървъри.

  Как да промените цветовата тема на Microsoft Office