Úvodná » ako » Ako získať geografickú polohu vášho systému z skriptu Bash

    Ako získať geografickú polohu vášho systému z skriptu Bash

    Toria / Shutterstock.com

    Geografickú polohu vzdialeného systému Linux nájdete pomocou otvorených rozhraní API a jednoduchého bash skriptu. Geolokovanie servera vám môže pomôcť sledovať ho vo fyzickom svete a zabezpečiť, aby sa servery nachádzali v regionálnych hotspotoch.

    Každý server na internete má verejnú IP adresu. Toto je buď priamo priradené k serveru, alebo priradené smerovaču, ktorý odosiela návštevnosť na tento server. IP adresy nám dávajú predstavu o tom, kde sa tento server nachádza vo svete. Tieto geolokačné dáta môžeme získať prostredníctvom dvoch otvorených rozhraní API poskytovaných ipinfo.co a IP Vigilante a použiť ich na zobrazenie mesta, štátu a krajiny asociovanej so serverom alebo iným vzdialeným systémom. To vám nedáva presné miesto GPS; jednoducho vám umožní vidieť všeobecnú oblasť adresy IP.

    Pripojte sa k vzdialenému systému

    Na serveri Linux alebo iných vzdialených systémoch, ktoré chcete geolokovať, budete spúšťať nasledujúce príkazy, takže sa musíte najprv pripojiť k serveru a najprv naň prejsť na shell. Môžete sa napríklad pripojiť cez SSH. Môžete spustiť príkazy vo vašom lokálnom systéme a nájsť jeho polohu, ale pravdepodobne už viete, kde ste!

    Nainštalujte zvlnenie a jq

    Na prístup k API geolokácie potrebujeme dva nástroje: curl na odosielanie požiadaviek HTTP a  JQ spracovať údaje JSON, ktoré dostaneme naspäť. Otvorte terminál a použite ho  apt-get nainštalovať tieto nástroje na systémy založené na Ubuntu alebo Debian. V iných distribuciách Linuxu použite namiesto toho balík na inštaláciu balíka Linux.

    sudo apt-get nainštalovať zvlnenie jq

    Nájdite verejnú IP adresu servera

    Taktiež potrebujeme verejnú IP adresu servera predtým, než získame geolokačné dáta. použitie curl , aby ste v okne terminálu volali rozhranie API na ipinfo.io.

    zvlnenie https://ipinfo.io/ip

    Získajte údaje o polohe z rozhrania API

    Teraz, keď máme verejnú IP adresu servera, môžeme zavolať na rozhranie API pre ipvigilante.com a získať geolokačné údaje. vymeniť s adresou, ktorá sa vrátila v predchádzajúcom príkaze.

    zvlnenie https://ipvigilante.com/

    Pozrime sa bližšie na to, aké údaje dostávame z tejto výzvy:

    Rozhranie API vracia mesto, krajinu a kontinent, v ktorom sídli náš server. Vracia aj približné súradnice zemepisnej šírky a dĺžky, ak chceme nakresliť tento server na interaktívnej mape. V našom skripte použijeme "zemepisnú šírku", "zemepisnú dĺžku", "názov mesta" a "názov_krajina".  JQ príkaz rozumie spracovaniu údajov API a extrahovanie týchto štyroch polí.

    Vytvorenie skriptu na automatizáciu volania rozhrania API

    Môžeme vytvoriť skript, ktorý uchytí geolokačné údaje a zapíše ich do súboru vo formáte CSV. Údaje sa zapíšu do súboru s názvom server_location.txt v / TMP / adresár. Otvorte svoj obľúbený editor a vytvorte skript s názvom geolocate.sh . Vložte nižšie uvedený obsah skriptu a nezabudnite nahradiť adresu IP vlastným:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Získajte verejnú IP adresu tohto servera PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Zavolajte rozhranie API pre geolokáciu a zachyťte výstupné vlny -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while read -r LATITUDE; čítať -r LONGITUDE read -r CITY read -r KRAJINA echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE hotovo 

    Uložte skript a vráťte sa na terminál. Spustite skript spustiteľný z terminálu tak, že mu udelíte povolenie na vykonanie tohto súboru.

    chmod u + x geolocate.sh

    Teraz ste pripravení vyskúšať to. Spustite geolocate.sh skript a skontrolujte obsah výstupného súboru:

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

    Aktualizácia údajov o geolokácii raz za deň s úlohou Cron

    Vytvorme si úlohu cron, aby náš server aktualizoval svoju geolokáciu a uložil ju do súboru raz denne. Denná úloha cron aktualizuje súbor nazvaný server_location.txt v / TMP / priečinok servera. Vytvorenie 24-hodinovej funkcie cron je rovnako jednoduché ako vloženie nášho skriptu do /etc/cron.daily adresár. Musíme použiť príkaz sudo na skopírovanie súboru ako užívateľ root, aby sme sa vyhli problémom s povolením. Spustite nasledujúci príkaz na kopírovanie geolocate.sh na /etc/cron.daily adresár.

    sudo cp geolocate.sh /etc/cron.daily

    Tieto zmeny sú okamžité a náš skript bude fungovať každých 24 hodín na aktualizáciu obsahu súboru /tmp/server_location.txt súboru. Tieto údaje môžeme použiť na zaujímavé veci, ako je napísanie našich serverov na mape, ako aj kombinovanie geolokácie s protokolmi o premávke, aby sme zistili, kde na svete sú naše hotspoty servera.