Para obter informações de localização geográfica sobre um endereço IP específico, você precisa usar algum serviço online que forneça a API apropriada. É uma boa ideia utilizar algum serviço público para evitar o procedimento de autorização e o gerenciamento de chaves API. Um desses serviços é FreeGeoIP.net.
Ele fornece uma API HTTP pública para pesquisar a geolocalização de endereços IP. Ele usa um banco de dados de endereços IP associados às cidades, juntamente com outras informações relevantes, como fuso horário, latitude e longitude. Isto é muito útil.
O serviço pode fornecer resultados de pesquisa como JSON ou XML. Portanto, se combinarmos curl com algum analisador JSON, podemos obter as informações necessárias.
Usarei meu analisador JSON favorito, jq:
É muito leve e rápido.
Para o nosso caso, a consulta deve ser a seguinte:
|_+_|A parte 'json' aqui é o formato de dados desejado. Além de JSON, pode ser XML ou CSV.
Vamos executar a consulta com curl e ver o resultado:
O resultado é uma saída JSON bruta que é difícil de ler. Para melhorar a aparência do conjunto de resultados, vamos usar a ferramenta jq. Combine-o com curl da seguinte maneira:
|_+_|A saída será mais fácil de ler:
Usando jq, você pode filtrar a saída e fazer com que ela mostre apenas os campos obrigatórios. O comando a seguir exibirá apenas o nome do país, latitude e longitude:
|_+_|Você pode salvar este comando como o seguinte script de shell:
|_+_|Na próxima vez que precisar obter informações de geolocalização, você poderá executar seu script assim:
|_+_|É isso.