Získajte informácie o geolokácii IP adresy v Bash v systéme Linux
Niekedy potrebujete rýchlo získať informácie o geolokácii pre IP adresu. V Linuxe môžete využiť silu konzolových aplikácií na šetrenie času a rýchle načítanie týchto informácií. Pozrime sa, ako sa to dá.
Reklama
Ak chcete získať informácie o geografickej polohe o konkrétnej adrese IP, musíte použiť nejakú online službu, ktorá poskytuje príslušné rozhranie API. Je dobré použiť nejakú verejnú službu, aby ste sa vyhli autorizačnému postupu a správe kľúčov API. Jednou z takýchto služieb je FreeGeoIP.net.
Poskytuje verejné HTTP API na vyhľadávanie geolokácie IP adries. Používa databázu IP adries, ktoré sú spojené s mestami, spolu s ďalšími relevantnými informáciami, ako je časové pásmo, zemepisná šírka a dĺžka. Toto je veľmi užitočné.
Služba môže poskytovať výsledky vyhľadávania ako JSON alebo XML. Takže, ak skombinujeme curl s nejakým JSON parserom, môžeme získať požadované informácie.
Použijem svoj obľúbený analyzátor JSON, jq:
Je veľmi ľahký a rýchly.
V našom prípade by mal byť dopyt nasledovný:
http://freegeoip.net/json/119.94.116.145
Časť „json“ tu predstavuje požadovaný formát údajov. Okrem JSON to môže byť XML alebo CSV.
Spustite dotaz pomocou curl a pozrime si výstup:
Výsledkom je nespracovaný výstup JSON, ktorý je ťažko čitateľný. Na zlepšenie vzhľadu sady výsledkov použite nástroj jq. Skombinujte ho s curl takto:
zvlniť http://freegeoip.net/json/119.94.116.145|jq
Výstup bude ľahšie čitateľný:
Pomocou jq môžete filtrovať výstup a nastaviť, aby zobrazoval iba požadované polia. Nasledujúci príkaz zobrazí iba názov krajiny, zemepisnú šírku a dĺžku:
zvlniť http://freegeoip.net/json/119.94.116.145|jq -r '.názov_krajiny,.zemepisná šírka,.zemepisná dĺžka'
Tento príkaz môžete uložiť ako nasledujúci skript shellu:
#!/bin/sh. curl -s http://freegeoip.net/json/$1|jq -r '.názov_krajiny,.zemepisná šírka,.zemepisná dĺžka'
Keď budete nabudúce potrebovať získať informácie o geolokácii, môžete skript spustiť takto:
./geo.sh IP_adresa
To je všetko.