Czasami trzeba szybko uzyskać informacje o geolokalizacji dla adresu IP. W systemie Linux możesz wykorzystać moc aplikacji konsolowych, aby zaoszczędzić czas i szybko odzyskać te informacje. Zobaczmy, jak można to zrobić.
Reklama
Aby uzyskać informacje o geolokalizacji o określonym adresie IP, musisz skorzystać z usługi online, która zapewnia odpowiednie API. Warto skorzystać z usług publicznych, aby uniknąć procedury autoryzacji i zarządzania kluczami API. Jedną z takich usług jest FreeGeoIP.net.
Udostępnia publiczny interfejs API HTTP do wyszukiwania geolokalizacji adresów IP. Korzysta z bazy danych adresów IP powiązanych z miastami oraz innych istotnych informacji, takich jak strefa czasowa, szerokość i długość geograficzna. To jest bardzo przydatne.
Usługa może udostępniać wyniki wyszukiwania w formacie JSON lub XML. Jeśli więc połączymy curl z parserem JSON, możemy uzyskać wymagane informacje.
jak pobrać wideo ze zdjęć google
Użyję mojego ulubionego parsera JSON, jq:
Jest bardzo lekki i szybki.
W naszym przypadku zapytanie powinno wyglądać następująco:
http://freegeoip.net/json/119.94.116.145
Część „json” to żądany format danych. Oprócz formatu JSON może to być XML lub CSV.
Uruchommy zapytanie za pomocą curl i zobaczmy wynik:
Rezultatem jest nieprzetworzone wyjście JSON, które jest trudne do odczytania. Aby poprawić wygląd zestawu wyników, użyjmy narzędzia jq. Połącz go z lokami w następujący sposób:
curl http://freegeoip.net/json/119.94.116.145|jq
Wynik będzie łatwiejszy do odczytania:
Korzystając z jq, możesz filtrować dane wyjściowe i wyświetlać tylko wymagane pola. Następujące polecenie wyświetli tylko nazwę kraju, szerokość i długość geograficzną:
curl http://freegeoip.net/json/119.94.116.145|jq -r „.country_name, .latitude, .longitude”
Możesz zapisać to polecenie jako następujący skrypt powłoki:
#! / bin / sh curl -s http://freegeoip.net/json/|jq -r '.country_name, .latitude, .longitude'
Następnym razem, gdy będziesz potrzebować informacji o geolokalizacji, możesz uruchomić skrypt w następujący sposób:
./geo.sh IP_address
Otóż to.