Homepage » come » Come ottenere la posizione geografica del tuo sistema da uno script Bash

    Come ottenere la posizione geografica del tuo sistema da uno script Bash

    Toria / Shutterstock.com

    Puoi trovare la posizione geografica di un sistema Linux remoto usando le API aperte e un semplice script bash. Geolocalizzare un server potrebbe aiutarti a seguirlo nel mondo fisico, assicurando che i server si trovino in hotspot regionali.

    Ogni server su Internet ha un indirizzo IP pubblico. Questo è direttamente assegnato al server o assegnato a un router che invia traffico a quel server. Gli indirizzi IP ci danno un'idea di dove si trova quel server nel mondo. Possiamo ottenere questi dati di geolocalizzazione tramite due API aperte, fornite da ipinfo.co e IP Vigilante e utilizzarle per visualizzare la città, lo stato e il paese associati a un server o altro sistema remoto. Questo non ti dà una posizione GPS precisa; ti permette semplicemente di vedere l'area generale dell'indirizzo IP.

    Connetti a un sistema remoto

    Dovrai eseguire i seguenti comandi sul server Linux o su altri sistemi remoti che vuoi geolocalizzare, quindi devi prima collegarti al server e accedere a una shell. Ad esempio, potresti connetterti tramite SSH. Potresti eseguire i comandi sul tuo sistema locale per trovare la sua posizione, ma probabilmente sai già dove sei!

    Installa arricciatura e jq

    Abbiamo bisogno di due strumenti per accedere all'API di geolocalizzazione: arricciare per fare richieste HTTP e  JQ per elaborare i dati JSON che otteniamo. Apri un terminale e usa  apt-get per installare questi strumenti su sistemi basati su Ubuntu o Debian. Su altre distribuzioni Linux, usa invece lo strumento di installazione del pacchetto della tua distribuzione Linux.

    sudo apt-get install curl jq

    Trova l'indirizzo IP pubblico del server

    Abbiamo anche bisogno dell'indirizzo IP pubblico del server prima di poter ottenere i dati di geolocalizzazione. Uso arricciare per effettuare una chiamata API a ipinfo.io nella finestra del terminale.

    curl https://ipinfo.io/ip

    Ottieni dati sulla posizione dall'API

    Ora che disponiamo dell'IP pubblico del server, possiamo effettuare una chiamata all'API di ipvigilante.com per ottenere i dati di geolocalizzazione. Sostituire con l'indirizzo che è tornato nel comando precedente.

    curl https://ipvigilante.com/

    Diamo uno sguardo più da vicino a quali dati torniamo da questa chiamata:

    L'API restituisce la città, il paese e il continente in cui risiede il nostro server. Restituisce anche le coordinate approssimative di latitudine e longitudine, nel caso in cui vogliamo disegnare questo server su una mappa interattiva. Utilizzeremo "latitudine", "longitudine", "nome città" e "nome paese" nel nostro script. Il  JQ comando capisce come elaborare i dati API ed estrarre questi quattro campi.

    Creazione di uno script per automatizzare la chiamata API

    Possiamo creare uno script che acquisisce i dati di geolocalizzazione e li scrive in un file in formato CSV. I dati verranno scritti in un file chiamato server_location.txt nel / Tmp / directory. Apri il tuo editor preferito e crea uno script chiamato geolocate.sh . Inserisci il contenuto dello script mostrato sotto e assicurati di sostituire l'indirizzo IP con il tuo:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Ottieni l'indirizzo IP pubblico di questo server PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Chiama l'API di geolocalizzazione e cattura l'output curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while leggi -r LATITUDE; leggi -r LONGITUDE leggi -r CITY leggi -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE fatto 

    Salva lo script e torna al terminale. Rendere eseguibile lo script dal terminale, concedendo il permesso di esecuzione su questo file.

    chmod u + x geolocate.sh

    Ora sei pronto per provarlo. Corri il geolocate.sh script e controlla il contenuto del file di output:

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

    Aggiornamento dei dati di geolocalizzazione una volta al giorno con un processo Cron

    Creiamo un cron job per fare in modo che il nostro server aggiorni la sua geolocalizzazione e lo salvi in ​​un file una volta al giorno. Il processo cron giornaliero aggiorna un file chiamato server_location.txt nel / Tmp / cartella del server. Creare un cron job di 24 ore è facile come mettere il nostro script nel /etc/cron.daily directory. È necessario utilizzare il comando sudo per copiare il file come utente root, per evitare problemi di autorizzazione. Eseguire il seguente comando per copiare geolocate.sh al /etc/cron.daily elenco.

    sudo cp geolocate.sh /etc/cron.daily

    Queste modifiche sono immediate e il nostro script verrà eseguito ogni 24 ore per aggiornare i contenuti del file /tmp/server_location.txt file. Possiamo utilizzare questi dati per fare cose interessanti, come ad esempio tracciare i nostri server su una mappa e combinare la geolocalizzazione con i log di traffico per vedere dove nel mondo i nostri hotspot server sono.