Jak získat Geografické umístění vašeho systému z skriptu Bash
Geografickou polohu vzdáleného systému Linux najdete pomocí otevřených rozhraní API a jednoduchého bash skriptu. Geolokace serveru vám může pomoci sledovat jej ve fyzickém světě a zajistit, aby se servery nacházely v regionálních hotspotech.
Každý server na internetu má veřejnou IP adresu. To je buď přímo přiřazeno k serveru, nebo přiřazeno směrovači, který odesílá návštěvnost serveru. IP adresy nám dávají ponětí o tom, kde se tento server nachází ve světě. Tyto geolokační data můžeme získat prostřednictvím dvou otevřených rozhraní API, které poskytli ipinfo.co a IP Vigilante, a používají je k zobrazení města, státu a země spojené se serverem nebo jiným vzdáleným systémem. To vám nedává přesné umístění GPS; to prostě umožňuje vidět obecnou oblast IP adresy.
Připojte k vzdálenému systému
Budete spouštět následující příkazy na serveru Linux nebo jiných vzdálených systémech, které chcete geolokovat, takže se musíte nejprve připojit k serveru a získat přístup k shellu. Například se můžete připojit přes SSH. Můžete spustit příkazy ve vašem místním systému a najít jeho polohu, ale pravděpodobně už víte, kde jste!
Instalovat zakřivení a jq
K přístupu do API geolokace potřebujeme dva nástroje: kučera
pro provedení HTTP požadavků a jq
zpracovávat data JSON, která se vrátíme zpět. Otevřete terminál a použijte apt-get
instalovat tyto nástroje v systémech se systémem Ubuntu nebo Debian. V jiných distribucích Linux použijte namísto toho instalační nástroj pro instalaci balíku distribuce systému Linux.
sudo apt-get instalace zakřivení jq
Najděte veřejnou adresu IP serveru
Také potřebujeme veřejnou IP adresu serveru předtím, než dostaneme geolokační data. Použití kučera
provést volání rozhraní API na ipinfo.io v okně terminálu.
curl https://ipinfo.io/ip
Získejte údaje o poloze z rozhraní API
Nyní, když máme veřejnou IP adresu serveru, můžeme volat rozhraní API pro ipvigilante.com, abychom získali geolokační data. Nahradit s adresou, která se vrátila v předchozím příkazu.
curl https://ipvigilante.com/
Podívejme se blíže na to, jaké údaje dostáváme z tohoto volání:
API vrátí město, zemi a kontinent, ve kterém sídlí náš server. Vrací také přibližné souřadnice zeměpisné šířky a délky, pokud chceme tento server na interaktivní mapě mapovat. V našem skriptu budeme používat "zeměpisné šířky", "délky", "název města" a "název_krajiny". The jq
příkaz rozumí zpracování dat API a extrahování těchto čtyř polí.
Vytvoření skriptu pro automatické volání rozhraní API
Můžeme vytvořit skript, který uchytí geolokační data a zapíše je do souboru ve formátu CSV. Data budou zapsána do souboru nazvaného server_location.txt
v / tmp /
adresář. Otevřete svůj oblíbený editor a vytvořte skript s názvem geolocate.sh
. Vložte níže uvedený obsah skriptu a nezapomeňte adresu IP nahradit vlastní:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Chyť veřejnou IP adresu tohoto serveru PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Zavolejte API geolokace a zachyťte výstupní křivky -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while čtení -r LATITUDE; čtení -r LONGITUDE read -r CITY read -r ZEMĚ echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE hotovo
Uložit skript a vrátit se do terminálu. Vytvořte skript spustitelný z terminálu tím, že udělíte oprávnění k provedení tohoto souboru.
chmod u + x geolocate.sh
Teď jste připraveni otestovat. Spusťte geolocate.sh
skriptu a zkontrolujte obsah výstupního souboru:
./geolocate.sh cat /tmp/server_location.txt
Aktualizace údajů o geolokaci jednou za den s úlohou Cron
Vytvořme cron úlohu, aby server aktualizoval svou geolokaci a uložil ji do souboru jednou denně. Denní úloha cron aktualizuje soubor nazvaný server_location.txt
v / tmp /
složky serveru. Vytvoření 24hodinové úlohy cron je stejně snadné jako vložení skriptu do /etc/cron.daily
adresář. Musíme použít příkaz sudo k zkopírování souboru jako kořenového uživatele, aby se předešlo problémům se svolením. Spusťte následující příkaz, který chcete zkopírovat geolocate.sh
na /etc/cron.daily
adresář.
sudo cp geolocate.sh /etc/cron.daily
Tyto změny jsou okamžité a náš skript bude fungovat každých 24 hodin, abychom aktualizovali obsah /tmp/server_location.txt
soubor. Tyto údaje můžeme využít k tomu, abychom mohli dělat zajímavé věci, jako je vykreslování našich serverů na mapě a také kombinaci geolokace s protokoly o provozu, abychom zjistili, kde jsou na světě naše serverové hotspoty.