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

Contenuti

Mappa del mondo con il concetto di connessioni Internet

Puoi trovare la posizione geografica di un sistema Linux remoto utilizzando API aperte e un semplice script bash. La geolocalizzazione di un server potrebbe aiutarti a rintracciarlo nel mondo fisico, garantire che i server si trovino nei punti di accesso regionali.

Ogni server Internet ha un indirizzo IP pubblico. Questo è mappato direttamente al server o è mappato a un router che invia traffico a quel server. Gli indirizzi IP ci danno un indizio su dove si trova quel server nel mondo. Possiamo ottenere questi dati di geolocalizzazione tramite due API aperte, forniti da ipinfo.co e IP Vigilante e usali per vedere 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 solo di vedere l'area generale dell'indirizzo IP.

Connettiti a un sistema remoto

Eseguirai i seguenti comandi sul server Linux o su altri sistemi remoti che desideri geolocalizzare, quindi devi prima connetterti al server e inserire una shell. Come esempio, può connettersi tramite SSH. Puoi eseguire i comandi sul tuo sistema locale per trovare la tua posizione, Ma probabilmente sai già dove sei!

Installa curl e jq

Abbiamo bisogno di due strumenti per accedere all'API di geolocalizzazione: curl per effettuare 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 lo strumento di installazione dei pacchetti 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. Utilizzo curl per effettuare una chiamata API a ipinfo.io nella finestra del terminale.

ricciolo https://ipinfo.io/ip

Ottieni dati sulla posizione dall'API

Ora che abbiamo l'IP pubblico del server, possiamo effettuare una chiamata all'API ipvigilante.com per ottenere i dati di geolocalizzazione. Sostituire <your ip address> con l'indirizzo che hai restituito nel comando precedente.

ricciolo https://ipvigilante.com/<il tuo indirizzo IP>

curl comando output

Diamo un'occhiata più da vicino ai dati che otteniamo da questa chiamata:

metadati che mostrano informazioni sulla posizione

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. noi useremo “latitud”, “longitud”, “nombre_ciudad” e “nombre_paísen nuestro script. il jq Il comando comprende come elaborare i dati API ed estrarre questi quattro campi.

Crea uno script per automatizzare la chiamata API

Podemos crear un script que tome los datos de geolocalización y los escriba en un archivo en formato CSV. Los datos se escribirán en un archivo llamado server_location.txt a /tmp/ directory. Abra su editor favorito y cree un script llamado geolocate.sh . Inserte el contenido del script que se muestra a continuación y asegúrese de reemplazar la dirección IP con la suya propia:

#!/bin/sh

OUTPUT_FILE=/tmp/server_location.txt

# Grab this server's public IP address
PUBLIC_IP=`curl -s https://ipinfo.io/ip`

# Call the geolocation API and capture the output
curl -s https://ipvigilante.com/${PUBLIC_IP} | 
        jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | 
        while read -r LATITUDE; do
                read -r LONGITUDE
                read -r CITY
                read -r COUNTRY
                echo "${LATITUDE},${LONGITUDE},${CITY},${COUNTRY}" | 
                        tr --delete " > 
                        ${OUTPUT_FILE}
        fatto

Guarde el script y vuelva a la terminal. Haga que el script sea ejecutable desde la terminal, otorgando el permiso de ejecución en este archivo.

chmod u+x geolocate.sh

Ahora estás listo para probarlo. Corri il geolocate.sh script y verifique el contenido del archivo de salida:

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

ejecutando el script de geolocalización

Actualización de los datos de geolocalización al menos una vez al día con un trabajo cron

Creiamo un cron job per il nostro server per aggiornare la sua geolocalizzazione e salvarlo su un file almeno una volta al giorno. Il cron job quotidiano aggiorna un file chiamato server_location.txt a /tmp/ cartella del server. Crea un cron job da 24 ore è semplice come inserire il nostro script nel /etc/cron.daily directory. Dobbiamo usare il comando sudo per copiare il file come utente root, per evitare problemi di autorizzazione. Esegui il seguente comando per copiare geolocate.sh al /etc/cron.daily directory.

sudo cp geolocate.sh /etc/cron.daily

Queste modifiche sono immediate e il nostro script verrà eseguito ogni 24 ore per aggiornare il contenuto del /tmp/server_location.txt procedimento. Possiamo usare questi dati per fare cose interessanti, come tracciare i nostri server su una mappa, oltre a combinare la geolocalizzazione con i record di traffico per vedere dove si trovano i punti di accesso dei nostri server nel mondo.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.