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>
Diamo un'occhiata più da vicino ai dati che otteniamo 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. noi useremo “latitud”, “longitud”, “nombre_ciudad” e “nombre_país” en 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
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);