Kako pridobiti geografsko lokacijo vašega sistema iz Bash skripta
Geografsko lokacijo oddaljenega sistema Linux lahko najdete z uporabo odprtih API-jev in preprostega bash skripta. Geolociranje strežnika bi vam lahko pomagalo slediti v fizičnem svetu, s tem da zagotovite, da se strežniki nahajajo v regionalnih vročih točkah.
Vsak strežnik na internetu ima naslov IP, ki je obrnjen v javnost. To je bodisi neposredno dodeljeno strežniku bodisi dodeljeno usmerjevalniku, ki pošilja promet na ta strežnik. Naslovi IP nas opozarjajo, kje se nahaja ta strežnik na svetu. Te geolokacijske podatke lahko dobimo preko dveh odprtih API-jev, ki jih zagotavljata ipinfo.co in IP Vigilante ter uporabljata za prikaz mesta, države in države, povezane s strežnikom ali drugim oddaljenim sistemom. To vam ne daje natančne lokacije GPS; preprosto si lahko ogledate splošno območje naslova IP.
Povežite se z oddaljenim sistemom
Na strežniku Linux ali drugih oddaljenih sistemih, ki jih želite geolocirati, boste izvajali te ukaze, zato se morate najprej povezati s strežnikom in dostopati do ukazne lupine. Lahko se na primer povežete prek SSH. Ukaze na lokalnem sistemu lahko zaženete, da najdete njegovo lokacijo, vendar verjetno že veste, kje ste!
Namestite curl in jq
Za dostop do API-ja za geolokacijo potrebujemo dve orodji: curl
za HTTP zahteve in jq
obdelati podatke JSON, ki jih dobimo nazaj. Odprite terminal in uporabite apt-get
namestiti ta orodja v sisteme, ki temeljijo na Ubuntu ali Debian. V drugih distribucijah Linuxa namesto tega uporabite namestitveno orodje paketa za distribucijo Linuxa.
sudo apt-get namestite curl jq
Poiščite javni IP naslov strežnika
Preden lahko dobimo geolokacijske podatke, potrebujemo tudi javni IP naslov strežnika. Uporaba curl
za klic API-ja ipinfo.io v terminalskem oknu.
curl https://ipinfo.io/ip
Pridobite podatke o lokaciji iz API-ja
Zdaj, ko imamo javni IP strežnika, lahko pokličemo API ipvigilante.com, da dobimo geolokacijske podatke. Zamenjati z naslovom, ki se je vrnil v prejšnjem ukazu.
curl https://ipvigilante.com/
Oglejmo si natančneje, katere podatke dobimo od tega klica:
API vrne mesto, državo in celino, v kateri je naš strežnik. Vrne tudi približne koordinate zemljepisne širine in dolžine, če želimo ta strežnik narisati na interaktivnem zemljevidu. V naši skripti bomo uporabljali »zemljepisno širino«, »zemljepisno dolžino«, »city_name« in »country_name«. The jq
ukaz razume, kako obdelati podatke API in izvleči ta štiri polja.
Ustvarjanje skripta za avtomatizacijo klica API-ja
Ustvarimo lahko skript, ki zagrabi geolokacijske podatke in jih zapiše v datoteko v obliki CSV. Podatki bodo zapisani v datoteko, imenovano server_location.txt
v / tmp /
imenik. Odprite najljubši urejevalnik in ustvarite imenovani skript geolocate.sh
. Vstavite vsebino skripta, ki je prikazana spodaj, in ne pozabite zamenjati naslova IP s svojim:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Zgrabi javni IP naslov tega strežnika PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Pokliči API za geolokacijo in zajame izhodne curl -s https : //ipvigilante.com/$ PUBLIC_IP | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | med branjem -r LATITUDE; do read -r LONGITUDE branje -r CITY branje -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | je končano - OUTPUT_FILE
Shranite skript in se vrnite na terminal. Naredite skript izvršljiv iz terminala, tako da podelite dovoljenje za izvajanje te datoteke.
chmod u + x geolocate.sh
Zdaj ste pripravljeni preizkusiti. Zaženi geolocate.sh
skript in preverite vsebino izhodne datoteke:
./geolocate.sh cat /tmp/server_location.txt
Posodabljanje podatkov o geolokaciji enkrat na dan s cronskim delom
Ustvarimo cronovo nalogo, da bo naš strežnik posodobil svojo geolokacijo in jo shranil v datoteko enkrat na dan. Dnevni cron posel posodablja imenovano datoteko server_location.txt
v / tmp /
v strežniku. Ustvarjanje 24-urnega cron-a je tako preprosto kot vstavljanje našega scenarija v /etc/cron.daily
imenik. Za kopiranje datoteke kot uporabnika root moramo uporabiti ukaz sudo, da bi se izognili težavam z dovoljenji. Za kopiranje zaženite naslednji ukaz geolocate.sh
do /etc/cron.daily
imenik.
sudo cp geolocate.sh /etc/cron.daily
Te spremembe so takojšnje in naš skript se bo izvajal vsakih 24 ur, da bi posodobil vsebino /tmp/server_location.txt
mapa. S temi podatki lahko uporabimo zanimive stvari, kot so na primer načrtovanje naših strežnikov na zemljevidu in združevanje geolokacije s prometnimi dnevniki, da bi videli, kje na svetu so naše strežniške dostopne točke.