Hur att Få Ditt System Geografiska Läge Från ett Bash-Skript

0
333
Toria/Shutterstock.kom

Du kan hitta den geografiska placeringen av ett Linux-system med öppna Api: er och ett enkelt bash-script. Geolocating en server kan hjälpa dig att spåra det i den fysiska världen, se till servrar som är placerade i regionala hotspots.

Varje server på internet har en offentlig IP-adress. Detta är antingen direkt kan hänföras till servern, eller tilldelas en router som skickar trafik till servern. IP-adresser ger oss en ledtråd om var att servern är placerad i världen. Vi kan få detta geolocation data genom två öppna Api: er som tillhandahålls av ipinfo.co och IP-Vigilante och använda den för att se den stad, stat, och länder som är associerade med en server eller andra avlägsna system. Detta behöver inte ge dig en exakt GPS-position, det bara låter dig se det allmänna området för IP-adress.

Ansluta till ett Fjärr-System

Du kommer att köra följande kommandon på Linux-server eller andra avlägsna system du vill geotagga, så måste du ansluta till servern och få tillgång till en shell på det första. Du kan till exempel ansluta via SSH. Du kan köra kommandon på ditt lokala system att hitta sin plats, men som du säkert redan vet var du är!

Installera curl och jq

Vi behöver två verktyg för att komma åt geolocation API: curl för att göra HTTP-begäranden och jq att processen JSON data som vi får tillbaka. Öppna en terminal och använda apt-get för att installera dessa verktyg på Ubuntu eller Debian-baserade system. På andra Linux-distributioner, använda din Linux-distribution är ett paket för installation verktyg istället.

sudo apt-get install curl jq

Hitta Serverns Offentliga IP-Adress

Vi behöver också serverns offentliga IP-adress innan vi kan få geolocation data. Använd curl för att göra en API-anrop för att ipinfo.io i ditt terminalfönster.

curl https://ipinfo.io/ip

Få Plats med Data Från API

Nu när vi har den offentliga IP-adressen för den server, som vi kan ringa till ipvigilante.com’s API för att få geografisk lokalisering. Byt ut <ip-adress> med den adress som kom tillbaka i föregående kommando.

curl https://ipvigilante.com/<ip-adress>

Låt oss ta en närmare titt på vilka data som vi får tillbaka från detta samtal:

API returnerar stad, land och kontinent, där våra servrar finns. Den returnerar även de ungefärliga koordinaterna för latitud och longitud, i händelse att vi vill rita denna server på en interaktiv karta. Vi kommer att använda “latitude” “longitud” “city_name,” och “country_name” i vårt manus. Den jq kommandot förstår hur processen API-data och utvinna dessa fyra områden ut.

Skapa ett Skript för att Automatisera API-Anrop

Vi kan skapa ett skript som tar tag i geolocation data och skriver ut det till en fil i CSV-format. Data kommer att skrivas till en fil som heter server_location.txt i /tmp-katalogen. Öppna din favoriteditor och skapa ett skript som heter geolocate.sh . Infoga skript innehållet som visas nedan, och se till att du byter IP-adress med din egen:

#!/bin/sh

OUTPUT_FILE=/tmp/server_location.txt

# Ta tag i detta serverns offentliga IP-adress
PUBLIC_IP= ” curl -s https://ipinfo.io/ip`

# Ring geolocation API och fånga utgång
curl -s https://ipvigilante.com/169.255.X.X |
jq ‘.uppgifter.latitud .uppgifter.longitud .uppgifter.city_name, .uppgifter.country_name’ |
medan läs -r LATITUD, göra
läs -r LONGITUD
läs -r STAD
läs -r LANDET
echo “${LATITUD},${LONGITUD},${STAD}${LANDET}” |
tr –delete ” >
${OUTPUT_FILE}
gjort

Spara skriptet och gå tillbaka till terminalen. Göra skriptet körbart från terminalen, genom att bevilja köra behörighet på denna fil.

chmod u+x geolocate.sh

Nu är du redo att testa det. Kör geolocate.sh skript och kontrollera innehållet i utdatafilen:

./geolocate.sh
katt /tmp/server_location.txt

Uppdatera Geolocation Data en Gång per Dag Med ett Cron-Jobb

Låt oss skapa ett cron-jobb att göra vår server uppdatera sin geolocation och spara den till en fil en gång per dag. Dagligt cron-jobb-uppdateringar i en fil som heter server_location.txt i /tmp/ mapp från servern. Skapa ett 24-timmars cron-jobb är lika enkelt som att sätta vårt skript i /etc/cron.dagliga katalog. Vi måste använda sudo-kommandot för att kopiera filen som root-användaren, för att undvika tillåtelse frågor. Kör följande kommando för att kopiera geolocate.sh till /etc/cron.dagliga katalog.

sudo cp geolocate.sh /etc/cron.dagligen

Dessa förändringar är omedelbar, och vårt skript kommer att köra alla 24 timmar på sig att uppdatera innehållet i /tmp/server_location.txt fil. Vi kan använda denna information för att göra intressanta saker, såsom att rita våra servrar på en karta samt att kombinera geografisk plats med trafik loggar för att se var i världen vår server via hotspots.