Domovská » jak » Jak získat Geografické umístění vašeho systému z skriptu Bash

    Jak získat Geografické umístění vašeho systému z skriptu Bash

    Toria / Shutterstock.com

    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.