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

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

    Toria / Shutterstock.com

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

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

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

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

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

    Необходими са два инструмента за достъп до приложния програмен интерфейс (API) за геолокация: къдрица да направите HTTP заявки и  JQ да обработваме JSON данните, с които се връщаме. Отворете терминал и използвайте  ап-да да инсталирате тези инструменти в Ubuntu или Debian-базирани системи. В други дистрибуции на Linux вместо това използвайте инструмента за инсталиране на пакета на Linux дистрибуцията.

    sudo apt-get install curl jq

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

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

    curl https://ipinfo.io/ip

    Получете данни за местоположението от API

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

    къдрям https://ipvigilante.com/

    Нека погледнем отблизо какви данни се връщаме от това обаждане:

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

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

    Можем да създадем скрипт, който грабва геолокационните данни и ги записва във файл в CSV формат. Данните ще бъдат записани във файл, наречен server_location.txt в / TMP / директория. Отворете любимия си редактор и създайте име на скрипт geolocate.sh . Вмъкнете съдържанието на скрипта, показано по-долу, и не забравяйте да замените IP адреса със собствения си:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Вземете публичния IP адрес на този сървър PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Извикайте API за геолокация и уловете изходните curl -s https : //ipvigilante.com/$ PUBLIC_IP | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | при четене -r LATITUDE; do read -r LONGITUDE четене -R CITY четене -R COUNTRY ехо "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | $ OUTPUT_FILE извършено 

    Запазете скрипта и се върнете към терминала. Направете скрипта изпълним от терминала, като предоставите разрешение за изпълнение на този файл.

    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 файл. Ние можем да използваме тези данни, за да направим интересни неща, като начертаване на нашите сървъри на картата, както и комбиниране на геолокация с дневници на трафика, за да видим къде в света са нашите сървърни горещи точки..