Dobijte informacije o geolokaciji IP adrese u Bashu u Linuxu
Ponekad morate brzo dobiti geolokacijske podatke za IP adresu. U Linuxu možete koristiti moć konzolnih aplikacija da uštedite vrijeme i brzo dohvatite ove informacije. Pogledajmo kako se to može učiniti.
Oglas
Da biste dobili informacije o geografskoj lokaciji o određenoj IP adresi, trebate koristiti neku online uslugu koja pruža odgovarajući API. Dobra je ideja koristiti neki javni servis kako biste izbjegli postupak autorizacije i upravljanje API ključevima. Jedna takva usluga je FreeGeoIP.net.
Pruža javni HTTP API za pretraživanje geolokacije IP adresa. Koristi bazu podataka IP adresa koje su povezane s gradovima zajedno s drugim relevantnim informacijama kao što su vremenska zona, zemljopisna širina i dužina. Ovo je vrlo korisno.
Usluga može pružiti rezultate pretraživanja kao JSON ili XML. Dakle, ako kombiniramo curl s nekim JSON parserom, možemo dobiti potrebne informacije.
Koristit ću svoj omiljeni JSON parser, jq:
Vrlo je lagan i brz.
U našem slučaju, upit bi trebao biti sljedeći:
http://freegeoip.net/json/119.94.116.145
Dio "json" ovdje je željeni format podataka. Osim JSON-a, može biti XML ili CSV.
Pokrenimo upit s curl i vidimo izlaz:
Rezultat je sirovi JSON izlaz koji je teško čitati. Da bismo poboljšali izgled skupa rezultata, upotrijebimo alat jq. Kombinirajte ga s uvojkom na sljedeći način:
kovrča http://freegeoip.net/json/119.94.116.145|jq
Izlaz će biti lakši za čitanje:
Koristeći jq, možete filtrirati izlaz i prikazati samo potrebna polja. Sljedeća naredba će prikazati samo naziv zemlje, širinu i dužinu:
kovrča http://freegeoip.net/json/119.94.116.145|jq -r '.naziv_zemlje,.latitude,.longitude'
Ovu naredbu možete spremiti kao sljedeću skriptu ljuske:
#!/bin/sh. kovrča -s http://freegeoip.net/json/$1|jq -r '.naziv_zemlje,.latitude,.longitude'
Sljedeći put kada trebate dobiti informacije o geolokaciji, svoju skriptu možete izvršiti na sljedeći način:
./geo.sh IP_adresa
To je to.