Domača » kako » Kako pridobiti geografsko lokacijo vašega sistema iz Bash skripta

    Kako pridobiti geografsko lokacijo vašega sistema iz Bash skripta

    Toria / Shutterstock.com

    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.