Ako získať geografickú polohu vášho systému z skriptu Bash
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.