Kako dobiti geografski položaj vašeg sustava iz Bash skripte
Možete pronaći geografski položaj udaljenog Linux sustava pomoću otvorenih API-ja i jednostavnog bash skripta. Geolociranje poslužitelja moglo bi vam pomoći da ga pratite u fizičkom svijetu, osiguravajući da se poslužitelji nalaze u regionalnim vrućim točkama.
Svaki poslužitelj na internetu ima javnu IP adresu. Ovo je ili izravno dodijeljeno poslužitelju ili je dodijeljeno usmjerivaču koji šalje promet na taj poslužitelj. IP adrese daju nam trag o tome gdje se taj poslužitelj nalazi u svijetu. Ove podatke o geolokaciji možemo dobiti putem dva otvorena API-ja, osigurana od strane ipinfo.co i IP Vigilante i koristiti ih za prikaz grada, države i zemlje povezane s poslužiteljem ili drugim udaljenim sustavom. To vam ne daje preciznu GPS lokaciju; samo vam omogućuje da vidite opće područje IP adrese.
Spojite se na udaljeni sustav
Izvodit ćete sljedeće naredbe na Linux poslužitelju ili drugim udaljenim sustavima koje želite geolocirati, tako da se prvo morate spojiti na poslužitelj i pristupiti ovoj ljusci. Na primjer, možete se povezati putem SSH-a. Na lokalnom sustavu možete pokrenuti naredbe da biste pronašli njegovu lokaciju, ali vjerojatno već znate gdje se nalazite!
Instalirajte curl i jq
Trebamo dva alata za pristup API-u za geolokaciju: kovrča
za izradu HTTP zahtjeva i JQ
za obradu JSON podataka koje dobivamo. Otvorite terminal i koristite apt-get
instalirati te alate na Ubuntu ili Debian bazirane sustave. Na drugim Linux distribucijama koristite alat za instalaciju paketa Linux distribucije.
sudo apt-get instalacija curl jq
Pronađite javnu IP adresu poslužitelja
Također nam je potrebna javna IP adresa poslužitelja prije nego što možemo dobiti podatke o geolokaciji. Koristiti kovrča
napraviti API poziv za ipinfo.io u vašem terminalskom prozoru.
curl https://ipinfo.io/ip
Preuzmite podatke o lokaciji iz API-ja
Sada kada imamo javni IP poslužitelja, možemo pozvati ipvigilante.com API da dobijemo geolokacijske podatke. Zamijeniti s adresom koja se vratila u prethodnoj naredbi.
curl https://ipvigilante.com/
Pogledajmo bliže koje podatke vraćamo iz ovog poziva:
API vraća grad, zemlju i kontinent u kojem se nalazi naš poslužitelj. Također vraća približne koordinate zemljopisne širine i dužine, u slučaju da želimo nacrtati poslužitelj na interaktivnoj karti. U našoj skripti koristit ćemo "zemljopisnu širinu", "dužinu", "grad_ime" i "ime_države". JQ
naredba razumije kako obraditi API podatke i izvaditi ta četiri polja.
Izrada skripte za automatizaciju poziva API-ja
Možemo stvoriti skriptu koja prikuplja geolokacijske podatke i zapisuje ih u datoteku u CSV formatu. Podaci će biti zapisani u datoteku koja se zove server_location.txt
u / TMP /
imenik. Otvorite omiljeni uređivač i stvorite ime pod nazivom geolocate.sh
. Umetnite sadržaj skripte prikazan u nastavku i svakako zamijenite IP adresu vlastitim:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Uhvatite javnu IP adresu ovog poslužitelja PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Pozovite API geolokacije i uhvatite izlazni curl -s https : //ipvigilante.com/$ PUBLIC_IP | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | tijekom čitanja -r LATITUDE; do read -r LONGITUDE čitanje -r CITY čitanje -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | * - OUTPUT_FILE učinjeno
Spremite skriptu i vratite se na terminal. Napravite skriptu izvršnu iz terminala, dajući dozvolu za izvršenje za ovu datoteku.
chmod u + x geolocate.sh
Sada ste spremni testirati ga. Pokrenite geolocate.sh
skripta i provjerite sadržaj izlazne datoteke:
./geolocate.sh cat /tmp/server_location.txt
Ažuriranje podataka o geolokaciji jednom dnevno uz Cron posao
Kreiramo cron posao kako bi naš poslužitelj ažurirao svoju geolokaciju i spremio je u datoteku jednom dnevno. Dnevni cron posao ažurira datoteku server_location.txt
u / TMP /
mape poslužitelja. Stvaranje 24-satnog cron posla je jednostavno kao i postavljanje naše skripte u /etc/cron.daily
imenik. Moramo upotrijebiti naredbu sudo za kopiranje datoteke kao korijenskog korisnika, kako bismo izbjegli probleme s dozvolama. Izvedite sljedeću naredbu za kopiranje geolocate.sh
prema /etc/cron.daily
imenik.
sudo cp geolocate.sh /etc/cron.daily
Te su promjene trenutačne, a naša će se skripta izvoditi svakih 24 sata kako bi se ažurirao sadržaj /tmp/server_location.txt
datoteka. Te podatke možemo upotrijebiti za izvođenje zanimljivih stvari, kao što je planiranje naših poslužitelja na karti, kao i kombiniranje geolokacije s prometnim zapisnicima kako bi se vidjelo gdje su u svijetu naši poslužitelji.