Nel prossimo articolo daremo un'occhiata a come possiamo ottenere la posizione geografica del nostro indirizzo IP pubblico. Saremo in grado di farlo tramite API aperte e un semplice script bash, tutto dal terminale Ubuntu. Oggi tutti i dispositivi connessi a Internet hanno un IP, che è stato il loro identificatore nel mondo. Questo indirizzo è quello che useremo per ottenere la tua posizione.
Quando navighiamo in Internet, ogni server ha un indirizzo IP pubblico, questo viene assegnato direttamente al server o tramite un router che invia il traffico di rete a quel server. Gli indirizzi IP forniscono un modo semplice per monitorare la posizione geografica del server nel mondo. Ciò può essere ottenuto utilizzando due API fornite da ipinfo.io e ipvigilante.com con il quale potremo ottenere il paese del server, il nome della città e le sue coordinate geografiche.
Nelle righe seguenti vedremo come ottenere la posizione geografica di un IP dal terminale aiutandoci con curl e jq. Lo scopo principale e l'uso per cURL è automatizzare i trasferimenti di file o sequenze di operazioni senza supervisione, mentre jq è un linguaggio funzionale di altissimo livello con supporto per il backtracking e la gestione dei flussi di dati JSON.
Posizione geografica di un IP dal terminale
Installa Curl e jq
Per ottenere la posizione geografica dell'indirizzo IP, dovremo installare curl e jq strumento da riga di comando per elaborare i dati JSON ottenuti dalle API di geolocalizzazione. Per installarli entrambi, in un terminale (Ctrl + Alt + T) dovrai scrivere il comando:
sudo apt install curl jq
Ottieni l'indirizzo IP pubblico del server
Prima di ottenere la posizione, è necessario conoscere l'indirizzo IP pubblico del server a cui ci colleghiamo. Per questo, useremo il seguente comando cURL con il quale faremo una richiesta ipinfo.io dal terminale (Ctrl + Alt + T) come mostrato di seguito:
curl https://ipinfo.io/ip
Ottieni i dati della posizione geografica dell'IP del tuo sistema grazie all'API
Dopo aver eseguito il comando precedente otterremo l'indirizzo IP pubblico. Una volta che l'avremo, saremo in grado di farlo inoltrare una richiesta a ipvigilante.com per ottenere i dati di geolocalizzazione. Per questo useremo il seguente comando nel terminale (Ctrl + Alt + T). È importante sostituire l'IP pubblico con quello ottenuto con il comando precedente.
curl https://ipvigilante.com/la-dirección-IP
Automatizza la chiamata API utilizzando Bash Script
Per automatizzare il processo di comunicazione con l'API andremo a creare uno script all'interno di un file chiamato ipgeolocator.sh (il nome è facoltativo). Per la sua creazione potremo utilizzare qualsiasi editor per la riga di comando con cui ognuno si sente più a suo agio.
vim ipgeolocalizador.sh
Quando si apre l'editor, dentro devi solo incolla la linea mostrato di seguito:
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
Una volta incollato, tutto ciò che devi fare è salvare il file e uscire dall'editor. Dopodiché sarà necessario rendere eseguibile lo script. Lo faremo scrivendo nello stesso terminale:
chmod +x ipgeolocalizador.sh
A questo punto possiamo eseguire lo script come segue per ottenere la posizione geografica dell'IP pubblico:
./ipgeolocalizador.sh
Lo script sopra mostra il nome della città e del paese insieme alle coordinate approssimative di latitudine e longitudine. La verità è che Non conosco il margine di errore che può avere.
Se non vuoi salvare il comando lungo sopra in un file, puoi anche eseguire lo stesso comando direttamente nel terminale (Ctrl + Alt + T):
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
In questo breve articolo abbiamo visto come ottenere la geolocalizzazione di un IP da Ubuntu utilizzando i comandi terminal e curl e jq. Puoi ottenere maggiori informazioni su jq o circa cURL nei corrispondenti articoli di Wikipedia.