Pridobite podatke o geolokaciji naslova IP v Bash v Linuxu
Včasih morate hitro pridobiti informacije o geolokaciji za naslov IP. V Linuxu lahko uporabite moč konzolnih aplikacij, da prihranite čas in hitro pridobite te informacije. Poglejmo, kako je to mogoče storiti.
Oglas
Za pridobitev informacij o geografski lokaciji o določenem naslovu IP morate uporabiti spletno storitev, ki ponuja ustrezen API. Dobro je uporabiti kakšno javno storitev, da se izognete postopku avtorizacije in upravljanju ključev API. Ena takih storitev je FreeGeoIP.net.
Zagotavlja javni API HTTP za iskanje geolokacije naslovov IP. Uporablja bazo podatkov IP naslovov, ki so povezani z mesti, skupaj z drugimi ustreznimi informacijami, kot so časovni pas, zemljepisna širina in dolžina. To je zelo koristno.
Storitev lahko zagotovi rezultate iskanja kot JSON ali XML. Torej, če združimo curl z razčlenjevalnikom JSON, lahko dobimo zahtevane informacije.
Uporabil bom svoj najljubši razčlenjevalnik JSON, jq:
Je zelo lahek in hiter.
V našem primeru bi morala biti poizvedba naslednja:
http://freegeoip.net/json/119.94.116.145
Del "json" tukaj je želeni format podatkov. Poleg JSON je lahko XML ali CSV.
Zaženimo poizvedbo s curl in si oglejmo rezultat:
Rezultat je neobdelani izhod JSON, ki ga je težko brati. Za izboljšanje videza niza rezultatov uporabimo orodje jq. Kombinirajte ga s kodrom na naslednji način:
curl http://freegeoip.net/json/119.94.116.145|jq
Izhod bo lažje prebrati:
Z uporabo jq lahko filtrirate izhod in prikažete samo zahtevana polja. Naslednji ukaz bo prikazal samo ime države, zemljepisno širino in dolžino:
curl http://freegeoip.net/json/119.94.116.145|jq -r '.ime_države,.širina,.dolžina'
Ta ukaz lahko shranite kot naslednji skript lupine:
#!/bin/sh. curl -s http://freegeoip.net/json/$1|jq -r '.ime_države,.širina,.dolžina'
Ko boste naslednjič morali pridobiti podatke o geolokaciji, lahko svoj skript izvedete takole:
./geo.sh IP_naslov
To je to.