Získejte informace o geolokaci IP adresy v Bash v Linuxu
Někdy potřebujete rychle získat geolokační informace pro IP adresu. V Linuxu můžete využít sílu konzolových aplikací k úspoře času a rychlému získání těchto informací. Pojďme se podívat, jak to lze udělat.
reklama
Chcete-li získat informace o zeměpisné poloze o konkrétní IP adrese, musíte použít nějakou online službu, která poskytuje příslušné API. Je dobré použít nějakou veřejnou službu, abyste se vyhnuli autorizační proceduře a správě API klíčů. Jednou z takových služeb je FreeGeoIP.net.
Poskytuje veřejné HTTP API pro vyhledávání geolokace IP adres. Využívá databázi IP adres, které jsou spojeny s městy, spolu s dalšími relevantními informacemi, jako je časové pásmo, zeměpisná šířka a délka. To je velmi užitečné.
Služba může poskytovat výsledky vyhledávání jako JSON nebo XML. Takže pokud zkombinujeme curl s nějakým JSON parserem, můžeme získat požadované informace.
Použiji svůj oblíbený analyzátor JSON, jq:
Je velmi lehký a rychlý.
V našem případě by dotaz měl znít následovně:
http://freegeoip.net/json/119.94.116.145
Část "json" zde představuje požadovaný formát dat. Kromě JSON to může být XML nebo CSV.
Spusťte dotaz pomocí curl a podívejte se na výstup:
Výsledkem je nezpracovaný výstup JSON, který je obtížně čitelný. Pro vylepšení vzhledu výsledné sady použijeme nástroj jq. Zkombinujte to s curl následovně:
kučera http://freegeoip.net/json/119.94.116.145|jq
Výstup bude lépe čitelný:
Pomocí jq můžete filtrovat výstup a nastavit, aby zobrazoval pouze požadovaná pole. Následující příkaz zobrazí pouze název země, zeměpisnou šířku a délku:
kučera http://freegeoip.net/json/119.94.116.145|jq -r '.název_země,.zeměpisná šířka,.délka'
Tento příkaz můžete uložit jako následující skript shellu:
#!/bin/sh. curl -s http://freegeoip.net/json/$1|jq -r '.název_země,.zeměpisná šířka,.délka'
Až budete příště potřebovat získat informace o geolokaci, můžete skript spustit takto:
./geo.sh IP_adresa
A je to.