Para obtener información de ubicación geográfica sobre una dirección IP específica, debe utilizar algún servicio en línea que proporcione la API adecuada. Es buena idea utilizar algún servicio público para evitar el procedimiento de autorización y la gestión de claves API. Uno de esos servicios es FreeGeoIP.net.
Proporciona una API HTTP pública para buscar la geolocalización de direcciones IP. Utiliza una base de datos de direcciones IP asociadas con ciudades junto con otra información relevante como zona horaria, latitud y longitud. Esto es muy útil.
El servicio puede proporcionar resultados de búsqueda en formato JSON o XML. Entonces, si combinamos curl con algún analizador JSON, podemos obtener la información requerida.
Usaré mi analizador JSON favorito, jq:
Es muy ligero y rápido.
Para nuestro caso, la consulta debería ser la siguiente:
|_+_|La parte 'json' aquí es el formato de datos deseado. Además de JSON, puede ser XML o CSV.
Ejecutemos la consulta con curl y veamos el resultado:
El resultado es una salida JSON sin formato que es difícil de leer. Para mejorar la apariencia del conjunto de resultados, usemos la herramienta jq. Combínalo con rizo de la siguiente manera:
|_+_|El resultado será más fácil de leer:
Usando jq, puede filtrar la salida y hacer que muestre solo los campos obligatorios. El siguiente comando mostrará solo el nombre del país, la latitud y la longitud:
|_+_|Puede guardar este comando como el siguiente script de shell:
|_+_|La próxima vez que necesite obtener información de geolocalización, puede ejecutar su script de esta manera:
|_+_|Eso es todo.