Pagina principala » HOWTO » Cum să obțineți locația geografică a sistemului dvs. dintr-un script Bash

    Cum să obțineți locația geografică a sistemului dvs. dintr-un script Bash

    Toria / Shutterstock.com

    Puteți găsi locația geografică a unui sistem Linux la distanță folosind API-uri deschise și un script simplu de bash. Geolocarea unui server vă poate ajuta să îl urmăriți în lumea fizică, asigurându-vă că serverele sunt situate în hotspot-uri regionale.

    Fiecare server de pe Internet are o adresă IP orientată spre public. Acest lucru este fie atribuit direct serverului, fie atribuit unui router care trimite trafic către acel server. Adresele IP ne dau un indiciu despre locul în care se află acest server în lume. Putem obține aceste date de geolocație prin intermediul a două API-uri deschise, furnizate de ipinfo.co și IP Vigilante și utilizându-l pentru a vedea orașul, statul și țara asociate cu un server sau alt sistem la distanță. Acest lucru nu vă oferă o locație GPS precisă; vă permite să vedeți zona generală a adresei IP.

    Conectați-vă la un sistem la distanță

    Veți executa următoarele comenzi pe serverul Linux sau pe alte sisteme la distanță pe care doriți să le localizați, deci trebuie să vă conectați la server și să accesați mai întâi o coajă pe acesta. De exemplu, s-ar putea să vă conectați prin SSH. Puteți rula comenzile din sistemul dvs. local pentru a găsi locația, dar probabil că deja știți unde vă aflați!

    Instalați curl și jq

    Avem nevoie de două instrumente pentru a accesa API-ul de localizare: răsuci pentru a face cereri HTTP și  JQ pentru a procesa datele JSON pe care le primim înapoi. Deschideți un terminal și utilizați-l  apt-get pentru a instala aceste instrumente pe sistemele Ubuntu sau Debian. În cazul altor distribuții Linux, utilizați în schimb instrumentul de instalare a pachetelor distribuției Linux.

    sudo apt-get instalare curl jq

    Găsiți adresa IP publică a serverului

    De asemenea, avem nevoie de adresa IP publică a serverului înainte de a putea obține datele de geolocație. Utilizare răsuci pentru a efectua un apel API la ipinfo.io în fereastra terminalului.

    curl https://ipinfo.io/ip

    Obțineți date despre locație din API

    Acum, dacă avem IP-ul public al serverului, putem apela API-ul ipvigilante.com pentru a obține datele de geolocație. A inlocui cu adresa care a revenit în comanda anterioară.

    curl https://ipvigilante.com/

    Să aruncăm o privire mai atent la datele pe care le primim din acest apel:

    API returnează orașul, țara și continentul în care locuiește serverul nostru. De asemenea, returnează coordonatele aproximative latitudine și longitudine, în cazul în care dorim să desenați acest server pe o hartă interactivă. Vom folosi "latitudine", "longitudine", "nume oraș" și "country_name" în scriptul nostru.  JQ comandă înțelege modul de procesare a datelor API și extrage aceste patru câmpuri.

    Crearea unui script pentru a automatiza apelul API

    Putem crea un script care captează datele geolocation și le scrie într-un fișier în format CSV. Datele vor fi scrise într-un fișier numit server_location.txt în / Tmp / director. Deschideți editorul dvs. preferat și creați un script numit geolocate.sh . Introduceți conținutul scriptului prezentat mai jos și asigurați-vă că înlocuiți adresa IP cu propria dvs.:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Luați adresa IP publică a serverului PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Apelați API-ul geolocation și capturați ieșirea curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ în timp ce citiți -R LATITUDE; citiți -r LONGITUDE read -r CITY citiți -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE terminat 

    Salvați scenariul și reveniți la terminal. Faceți scriptul executabil din terminal, acordând permisiunea de executare a acestui fișier.

    chmod u + x geolocate.sh

    Acum sunteți gata să încercați. Pornește geolocate.sh script și verificați conținutul fișierului de ieșire:

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

    Actualizarea datelor de geolocație o dată pe zi cu o activitate Cron

    Să creăm o sarcină cron pentru ca serverul nostru să își actualizeze geolocația și să o salveze într-un fișier o dată pe zi. Cronul zilnic actualizează un fișier numit server_location.txt în / Tmp / folderul serverului. Crearea unei funcții cron de 24 de ore este la fel de ușoară ca introducerea scenariului nostru în /etc/cron.daily director. Trebuie să folosim comanda sudo pentru a copia fișierul ca utilizator rădăcină, pentru a evita problemele de permisiune. Rulați următoarea comandă pentru copiere geolocate.sh la /etc/cron.daily director.

    sudo cp geolocate.sh /etc/cron.daily

    Aceste modificări sunt imediate și scriptul nostru va fi rulat la fiecare 24 de ore pentru a actualiza conținutul /tmp/server_location.txt fişier. Putem folosi aceste date pentru a face lucruri interesante, cum ar fi planificarea serverelor pe o hartă, precum și combinarea localizării cu jurnalul de trafic pentru a vedea unde în lume sunt hotspoturile serverului nostru.