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.
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:
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:
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'
#!/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.