Come ottenere la posizione geografica del tuo sistema da uno script Bash
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.