Så här får du ditt systems geografiska läge från ett basprogram
Du kan hitta den geografiska platsen för ett avlägset Linux-system med öppna API och ett enkelt bash-skript. Geolocating en server kan hjälpa dig att spåra den i den fysiska världen och se till att servrar finns i regionala hotspots.
Varje server på internet har en IP-adress som är öppen för allmänheten. Detta tilldelas antingen direkt till servern eller tilldelas en router som skickar trafik till den servern. IP-adresser ger oss en aning om var den servern finns i världen. Vi kan få denna geolocation-data genom två öppna API-skivor, som tillhandahålls av ipinfo.co och IP Vigilante och använder den för att se staden, staten och landet som är associerat med en server eller ett annat fjärrsystem. Detta ger dig inte en exakt GPS-plats det låter dig bara se det allmänna området för IP-adressen.
Anslut till ett fjärrsystem
Du kör följande kommandon på Linux-servern eller andra fjärrsystem du vill geolocate, så du måste ansluta till servern och få tillgång till ett skal på det först. Till exempel kan du ansluta via SSH. Du kan köra kommandona på ditt lokala system för att hitta platsen, men du vet förmodligen redan var du är!
Installera curl och jq
Vi behöver två verktyg för att komma åt API: n för geolocation: ringla
att göra HTTP-förfrågningar och jQ
att bearbeta JSON-data som vi kommer tillbaka. Öppna en terminal och använd apt-get
att installera dessa verktyg på Ubuntu eller Debian-baserade system. På andra Linux-distributioner, använd din Linux-distributions paketinstallationsverktyg istället.
sudo apt-get installera curl jq
Hitta serverns offentliga IP-adress
Vi behöver också serverns offentliga IP-adress innan vi kan få geolokaliseringsdata. Använda sig av ringla
att göra ett API-samtal till ipinfo.io i ditt terminalfönster.
curl https://ipinfo.io/ip
Hämta platsdata från API: n
Nu när vi har serverns offentliga IP kan vi ringa till ipvigilante.coms API för att få geolokalitetsdata. Byta ut med adressen som kom tillbaka i föregående kommando.
curl https://ipvigilante.com/
Låt oss se närmare på vilka data vi kommer tillbaka från det här samtalet:
API: n returnerar staden, landet och kontinenten, där vår server är bosatt. Den returnerar också approximativa latitud- och longitudkoordinater, om vi vill dra denna server på en interaktiv karta. Vi använder "latitud", "longitud", "stadskod" och "landnamn" i vårt skript. De jQ
Kommandot förstår hur man bearbetar API-data och extraherar dessa fyra fält ut.
Skapa ett skript för att automatisera API-samtalet
Vi kan skapa ett skript som tar tag i geolokationsdata och skriver det till en fil i CSV-format. Uppgifterna kommer att skrivas till en fil som heter server_location.txt
i / Tmp /
katalogen. Öppna din favoritredigerare och skapa ett skript som heter geolocate.sh
. Sätt in skriptets innehåll som visas nedan och var noga med att ersätta IP-adressen med din egen:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Ta tag i den här serverns offentliga IP-adress PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Ring till geolocation API och fånga output curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ medan du läser -r LATITUDE; läs -r LONGITUDE read -r CITY läs -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE gjort
Spara skriptet och gå tillbaka till terminalen. Gör manuset körbart från terminalen genom att bevilja exekveringsbehörigheten på den här filen.
chmod u + x geolocate.sh
Nu är du redo att testa den. Springa det geolocate.sh
skript och kontrollera innehållet i utdatafilen:
./geolocate.sh cat /tmp/server_location.txt
Uppdatering av Geolocation Data en gång om dagen med ett Cron-jobb
Låt oss skapa ett cron jobb för att göra vår server uppdatera sin geolocation och spara den till en fil en gång om dagen. Det dagliga cron-jobbet uppdaterar en fil som heter server_location.txt
i / Tmp /
mappen på servern. Att skapa ett 24-timmars cronjobb är lika enkelt som att sätta in vårt skript i /etc/cron.daily
katalogen. Vi måste använda sudo-kommandot för att kopiera filen som root-användare, för att undvika tillståndsproblem. Kör följande kommando för att kopiera geolocate.sh
till /etc/cron.daily
katalog.
sudo cp geolocate.sh /etc/cron.daily
Dessa ändringar är omedelbara, och vårt skript körs var 24: e timme för att uppdatera innehållet i /tmp/server_location.txt
fil. Vi kan använda dessa data för att göra intressanta saker, som att plotta våra servrar på en karta, samt kombinera geolocation med trafikloggar för att se var i världen våra server hotspots är.